沒試過﹐不過不知用exec行不行

解决方案 »

  1.   

    exec spname 参数1,参数2
      

  2.   

    问题是在select语句中怎么调用????
    并且还要取回反回值!!!!!!!!!
      

  3.   

    create view x(a,b,c)as 
    select @a,@b,dbo.myfunc('1','2','3') from table1create fucntion myfucn()
    returns int(可以返回一个表类型table,  再把@a,@b插入进去作为视图)
    as
    ...//c=proc '1','2','3'三个参数返回一个值吗?
    把要求写清楚,总有办法
      

  4.   

    1、存储过程不能直接写create view 语句,必须用动态SQL
    2、看不明白你的视图是怎么样的。
      

  5.   

    CREATE PROCEDURE proc_a
    AS
    declare @a char(10), @b char(10), @c char(10), @sql varchar(200)
    exec proc_b '1', '2', '3', @c out --先执行另一个存储过程并返回结果@c
    select @a = 'field1'
    select @b = 'field2'
    select @sql = 'create view x(a,b,c) as select ' + @a + ',' 
    + @b +',' + @c + ' from tablename'
    exec(@sql)
      

  6.   

    to:Yang_(扬帆破浪) 
    创建视图我是用动态sql语句生成的,这个没问题。
    hycao(海草) 
    这样的话可能又得用到嵌套了,在vc里执行不能通过!
      

  7.   

    to:hycao(海草) 
    exec proc_b '1', '2', '3', @c out --先执行另一个存储过程并返回结果@c
                               ^^^^^^^^
    @c out这地方要在存储过程中指明并用return 吗?
      

  8.   

    create proc report(@a,@b,@c,@d) as
    DECLARE @F
    exec proc_b '1', '2', '3', @F out 
    --1:
    declare cur scroll cursor for
        select a,b,c,d,@f from table where a=@a and b=@b
      

  9.   

    to:OpenVMS(半知半解) 
    按你所说的,proc_b是不是应该有四个参数?
    然后在存储过程中return @f
    ????
    可是如果用return则将varchar值转换为int的列时发生语法错误?
    请指教
      

  10.   

    SQL Server的存储过程是一个有些混乱的东西,如果说是一个过程,那么过程就不能有返回值.
    create proc test
    as
    select * from authors;
    go
    这个结果集就作为返回值返回了。
      

  11.   

    问题是怎么在存储过程中调用另一个存储过程的返回值,我用select @f在查询分析器里可返回结果,但是如果用return则说varchar转换成int列的时候语法错误,
    高手请指教!!!!!!!!!!!!!!!!
    一直搞不懂为什么带有游标嵌套的存储过程在查询分析器里执行好好的,到vc里去执行结果就是莫名其妙的!百思不得其解,这个问题已经困忧我两天了,急!
      

  12.   

    proc:
    @ .. OUTPUT
    @f=...
    return
    调用时,用本地变量 后加OUTPUT
      

  13.   

    declare @c int
    exec @c=proc '1','2','3'create view x(a,b,c)as 
    select @a,@b,@c这样执行就可以
      

  14.   

    to:OpenVMS(半知半解) 
    decluare @f varchar(2000) output
    ????不能在decluare语句中使用output选项
    create proce p(@f varchar(2000) output)
    return   ---->>好像并不能返回结果?
    return @f ---->>>>varchar值转换为int列时语法错误
      

  15.   

    // CREATE PROCEDURE TestParm @OutParm int OUTPUT AS
    // SELECT au_lname FROM pubs.dbo.authors
    // SELECT @OutParm = 88
    // RETURN 99
    declare @f varchar(2000)
    exec testparm(@f)
      

  16.   

    // CREATE PROCEDURE TestParm @OutParm varchar(2000) OUTPUT AS
    // SELECT @OutParm = ...
    // RETURN 99
    declare @f varchar(2000)
    exec testparm(@f)
      

  17.   

    现在改成这样:
    exec @f=proca(@a,@b,@c,@d)
    ....
    ----
    create proce proca(@a varchar(10),@b varchar(10),@c varchar(10),@d varchar(2000) output) as .....
    set @d=@....
    return 
    ---
    我发现返回值都是零???????????怎么回事?
    头都大了哦
      

  18.   

    to:OpenVMS(半知半解) 
    按你的说法返回来是null
    // CREATE PROCEDURE TestParm @OutParm varchar(2000) OUTPUT AS
    // SELECT @OutParm = ...    <<<<<<<<<这句话好像没没有返回值到存储过程中,到是在查询分析器里有反应,我update的时候得到的值是null
    // RETURN 99                <<<<<<<<99 是什么意思?
    declare @f varchar(2000)
    exec testparm(@f)          <<<<<<<<好像不能用()包含进去吧
      

  19.   

    99是返回码,可不写
    写错了 exec testparm @f=@OutParm OUTPUT
      

  20.   

    好像有点眉目了!
    又出现一个新问题:
    declare @f varchar(2000)
    delcare f_c scroll cursor for
        select c from tmp_t group by c
        if @@cursor_rows>0
        begin 
          set @i=1
          while @i<=@cursor_rows
          begin
             fetch next ....
             exec porc_x @a,@b,@c,@d=@d output
             update tmp_t set f=@f where c=@c
             set @i=@i+1
          end
        end
    close ......为什么执行exec.....这两句话的时候不能循环?
    找成别的比如select @i,@c
    就能正常循环?
    真是搞不懂这sqlserver是怎么搞的!!!!!!!