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 的  这里好像没有什么赋值的句子啊。 谢谢啊

解决方案 »

  1.   

    帮你整理下语句,也许好理解些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); 
      

  2.   

    output 参数可以在存储过程中赋值
      

  3.   

    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); 
      

  4.   

    Yang_(扬帆破浪)  output 参数可以在存储过程中赋值 这句话是什么意思  我是新手 不太懂 
     能不能说清楚一点呢?lawrendc()  原来的句子里没有 SET @result='lawrendc' --给变量赋值
    这一句啊
      

  5.   

    你要给@result变量赋值 对吧?
    就这一句 下边这样也行
    select @result='lawrendc'
      

  6.   

    lawrendc()   这个赋值句子我知道  就是不知道上面我问的那个存储过程  
    它是怎么把返回的值赋给变量的 在那个句子里我没有看到set赋值啊 我想知道他是怎么赋的。
    是不是跟那个output有关呢?
      

  7.   

    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) 该句并不属于该存储过程
      

  8.   

    你执行了存储过程后那个变量就已经赋上值了 要给那个输出变量赋值是在存储过程中已经写好了的了 不需要你去担心 下边是联机帮助中代码 你看看 怎么赋值的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 = @titleRETURN
    GO
      

  9.   

    --只要我事先声明了变量  然后再执行一个有返回值的存储过程  是不是这具值会自动赋给这个变量呢?
    恩 
    --可是如果我声明了多个变量 那这个值、会赋给哪个变量呢? 
    你将哪个变量运用到存储过程中的返回值上就赋值给哪个啊 比如:
    declare @Num1 varchar(4),
            @Num2 varchar(4),
            @Num3 varchar(4)
    exec proc_name @Num2 output 
    这就将值赋给 @Num2 
    多看看联机帮助