当前位置: 代码迷 >> Sql Server >> 存储过程传递值的有关问题
  详细解决方案

存储过程传递值的有关问题

热度:102   发布时间:2016-04-27 21:36:28.0
存储过程传递值的问题
DECLARE   @result   varchar(255)   EXEC   master.dbo.xp_regread   'HKEY_LOCAL_MACHINE ',   'SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual   Roots ',   '/ ',   @result   output   insert   into   临时表   (临时字段名)   values(@result);  
 
我想知道xp_regread这个存储过程是怎么把值传给变量@result   的     这里好像没有什么赋值的句子啊。   谢谢啊

------解决方案--------------------
帮你整理下语句,也许好理解些

DECLARE @result varchar(255)
EXEC master.dbo.xp_regread
'HKEY_LOCAL_MACHINE ',
'SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots ',
'/ ',
@result output
insert into 临时表 (临时字段名)
values(@result);

------解决方案--------------------
output 参数可以在存储过程中赋值

------解决方案--------------------
DECLARE @result varchar(255)
SET @result= 'lawrendc ' --给变量赋值
EXEC master.dbo.xp_regread
'HKEY_LOCAL_MACHINE ',
'SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots ',
'/ ',
@result output
insert into 临时表 (临时字段名)
values(@result);

------解决方案--------------------
[email protected] 对吧?
就这一句 下边这样也行
select @result= 'lawrendc '
------解决方案--------------------
DECLARE @result varchar(255)
SET @result= 'lawrendc ' --给变量赋值
EXEC master.dbo.xp_regread
'HKEY_LOCAL_MACHINE ',
'SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots ',
'/ ',
@result output

xp_regread 返回一个值,[email protected]
[email protected]

insert into 临时表 (临时字段名)
values(@result) 该句并不属于该存储过程
------解决方案--------------------
你执行了存储过程后那个变量就已经赋上值了 要给那个输出变量赋值是在存储过程中已经写好了的了 不需要你去担心 下边是联机帮助中代码 你看看 怎么赋值的

CREATE PROCEDURE get_sales_for_title
@title varchar(80) = NULL, -- NULL default value
@ytd_sales int OUTPUT
AS

-- Validate the @title parameter.
IF @title IS NULL
BEGIN
PRINT 'ERROR: You must specify a title value. '
RETURN
END

-- Get the sales for the specified title and
-- assign it to the output parameter.
SELECT @ytd_sales = ytd_sales
FROM titles
WHERE title = @title

RETURN
GO
------解决方案--------------------
当我们执行一个存储过程的时候,如果该存储过程有返回值,那我们只需要定义一个用于做返回值的变量就可以得到返回值了,但当我们在写一个存储过程并想从中得到返回值的时候,就必须在该存储过程中写好如何得到返回值,系统不会自动赋值的,我不知道这样说你懂了没有
你给的那段代码只是执行存储过程的代码 你当然就看不到给返回值赋值的语句了
------解决方案--------------------
--只要我事先声明了变量 然后再执行一个有返回值的存储过程 是不是这具值会自动赋给这个变量呢?

--可是如果我声明了多个变量 那这个值、会赋给哪个变量呢?
你将哪个变量运用到存储过程中的返回值上就赋值给哪个啊 比如:
declare @Num1 varchar(4),
@Num2 varchar(4),
@Num3 varchar(4)
exec proc_name @Num2 output
这就将值赋给 @Num2
多看看联机帮助
  相关解决方案