存储过程传递值的问题
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);  
------解决方案--------------------你要给@result变量赋值 对吧? 
 就这一句 下边这样也行 
 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 返回一个值,放到@result 中 
 再将@result的值插入到临时表的字段中   
 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  
 多看看联机帮助