exec 存储过程名 参数1,参数2,....

解决方案 »

  1.   

    exec yoursp @a,@b,@c,@d
      

  2.   

    我知道exec后面应该加存储过程的名字,后面再加参数。
    但是我看到的一个存储过程里面就是这样写的啊!
    调用子存储过程:
    exec @a @b,@c,@d
    前面的@a和后面的@b没有用‘,’隔开。
    这是什么用法呢?表示什么意思啊?
      

  3.   

    exec @a @b,@c,@d
    @a  保存存储过程名的变量
    @b,@c,@d  是@a的参数
      

  4.   

    exec ('select '+表名+'from tb')
      

  5.   

    第一下@A应该是字符串.可能是过程名.后面的就是参数
    也可能全是字符串,4个组合一起就成了一个完整的SQL语句
      

  6.   

    EXECUTE
    执行标量值的用户定义函数、系统过程、用户定义存储过程或扩展存储过程。同时支持 Transact-SQL 批处理内的字符串的执行 若要唤醒调用函数,请使用 EXECUTE stored_procedure 中描述的语法。语法
    执行存储过程:[ [ EXEC [ UTE ] ]
        { 
            [ @return_status = ]
                { procedure_name [ ;number ] | @procedure_name_var
        } 
        [ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] ]
            [ ,...n ] 
    [ WITH RECOMPILE ] 执行字符串:EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )
      

  7.   

    示例
    A. 使用 EXECUTE 传递单个参数
    showind 存储过程需要参数 (@tabname),它是一个表的名称。下面这个例子执行 showind 存储过程,以 titles 为参数值。说明  showind 存储过程只是用来作为一个例子,pubs 数据库并没有此过程。
    EXEC showind titles在执行过程中变量可以显式命名:EXEC showind @tabname = titles如果这是 isql 脚本或批处理中第一个语句,则 EXEC 语句可以省略:showind titles-或-showind @tabname = titlesB. 使用多个参数与一个输出参数
    这个例子执行 roy_check 存储过程,传递三个参数。第三个参数 @pc 是输出参数。过程执行完后,返回变量可以从变量 @percent 得到。说明  roy_check 存储过程只是用作举例,pubs 数据库中并没有此过程。
    DECLARE @percent int
    EXECUTE roy_check 'BU1032', 1050, @pc = @percent OUTPUT
    SET Percent = @percentC.使用带一个变量的 EXECUTE 'tsql_string' 语句
    这个例子显示 EXECUTE 语句如何处理动态生成的、含有变量的字符串。这个例子创建 tables_cursor 游标来保存所有用户定义表 (type = U) 的列表。说明  此例子只用作举例。
    DECLARE tables_cursor CURSOR
       FOR
       SELECT name FROM sysobjects WHERE type = 'U'
    OPEN tables_cursor
    DECLARE @tablename sysname
    FETCH NEXT FROM tables_cursor INTO @tablename
    WHILE (@@FETCH_STATUS <> -1)
    BEGIN
       /* A @@FETCH_STATUS of -2 means that the row has been deleted.
       There is no need to test for this because this loop drops all
       user-defined tables.   */.
       EXEC ('DROP TABLE ' + @tablename)
       FETCH NEXT FROM tables_cursor INTO @tablename
    END
    PRINT 'All user-defined tables have been dropped from the database.'
    DEALLOCATE tables_cursorD.使用带远程存储过程的 EXECUTE 语句
    这个例子在远程服务器 SQLSERVER1 上执行 checkcontract 存储过程,在 @retstat 中保存返回状态,说明运行成功或失败。DECLARE @retstat int
    EXECUTE @retstat = SQLSERVER1.pubs.dbo.checkcontract '409-56-4008'E. 使用带扩展存储过程的 EXECUTE 语句
    下例使用 xp_cmdshell 扩展存储过程列出文件扩展名为 .exe 的所有文件的目录。USE master
    EXECUTE xp_cmdshell 'dir *.exe'F. 使用带一个存储过程变量的 EXECUTE 语句
    这个例子创建一个代表存储过程名称的变量。DECLARE @proc_name varchar(30)
    SET @proc_name = 'sp_who'
    EXEC @proc_nameG. 使用带 DEFAULT 的 EXECUTE 语句
    这个例子创建了一个存储过程,过程中第一个和第三个参数为默认值。当运行该过程时,如果调用时没有传递值或者指定了默认值,这些默认值就会赋给第一个和第三个参数。注意 DEFAULT 关键字有多种使用方法。 USE pubs
    IF EXISTS (SELECT name FROM sysobjects 
          WHERE name = 'proc_calculate_taxes' AND type = 'P')
       DROP PROCEDURE proc_calculate_taxes
    GO
    -- Create the stored procedure.
    CREATE PROCEDURE proc_calculate_taxes (@p1 smallint = 42, @p2 char(1), 
          @p3 varchar(8) = 'CAR')
        AS 
       SELECT * 
       FROM mytableproc_calculate_taxes 存储过程可以以多种组合方式执行: EXECUTE proc_calculate_taxes @p2 = 'A'
    EXECUTE proc_calculate_taxes 69, 'B'
    EXECUTE proc_calculate_taxes 69, 'C', 'House'
    EXECUTE proc_calculate_taxes @p1 = DEFAULT, @p2 = 'D'
    EXECUTE proc_calculate_taxes DEFAULT, @p3 = 'Local', @p2 = 'E'
    EXECUTE proc_calculate_taxes 69, 'F', @p3 = DEFAULT
    EXECUTE proc_calculate_taxes 95, 'G', DEFAULT
    EXECUTE proc_calculate_taxes DEFAULT, 'H', DEFAULT
    EXECUTE proc_calculate_taxes DEFAULT, 'I', @p3 = DEFAULT