exec 后面加的不是存储过程是什么意思啊? exec 存储过程名 参数1,参数2,.... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 exec yoursp @a,@b,@c,@d 我知道exec后面应该加存储过程的名字,后面再加参数。但是我看到的一个存储过程里面就是这样写的啊!调用子存储过程:exec @a @b,@c,@d前面的@a和后面的@b没有用‘,’隔开。这是什么用法呢?表示什么意思啊? exec @a @b,@c,@d@a 保存存储过程名的变量@b,@c,@d 是@a的参数 exec ('select '+表名+'from tb') 第一下@A应该是字符串.可能是过程名.后面的就是参数也可能全是字符串,4个组合一起就成了一个完整的SQL语句 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 ] ) 示例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 intEXECUTE roy_check 'BU1032', 1050, @pc = @percent OUTPUTSET Percent = @percentC.使用带一个变量的 EXECUTE 'tsql_string' 语句这个例子显示 EXECUTE 语句如何处理动态生成的、含有变量的字符串。这个例子创建 tables_cursor 游标来保存所有用户定义表 (type = U) 的列表。说明 此例子只用作举例。DECLARE tables_cursor CURSOR FOR SELECT name FROM sysobjects WHERE type = 'U'OPEN tables_cursorDECLARE @tablename sysnameFETCH NEXT FROM tables_cursor INTO @tablenameWHILE (@@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 @tablenameENDPRINT 'All user-defined tables have been dropped from the database.'DEALLOCATE tables_cursorD.使用带远程存储过程的 EXECUTE 语句这个例子在远程服务器 SQLSERVER1 上执行 checkcontract 存储过程,在 @retstat 中保存返回状态,说明运行成功或失败。DECLARE @retstat intEXECUTE @retstat = SQLSERVER1.pubs.dbo.checkcontract '409-56-4008'E. 使用带扩展存储过程的 EXECUTE 语句下例使用 xp_cmdshell 扩展存储过程列出文件扩展名为 .exe 的所有文件的目录。USE masterEXECUTE xp_cmdshell 'dir *.exe'F. 使用带一个存储过程变量的 EXECUTE 语句这个例子创建一个代表存储过程名称的变量。DECLARE @proc_name varchar(30)SET @proc_name = 'sp_who'EXEC @proc_nameG. 使用带 DEFAULT 的 EXECUTE 语句这个例子创建了一个存储过程,过程中第一个和第三个参数为默认值。当运行该过程时,如果调用时没有传递值或者指定了默认值,这些默认值就会赋给第一个和第三个参数。注意 DEFAULT 关键字有多种使用方法。 USE pubsIF EXISTS (SELECT name FROM sysobjects WHERE name = 'proc_calculate_taxes' AND type = 'P') DROP PROCEDURE proc_calculate_taxesGO-- 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 = DEFAULTEXECUTE proc_calculate_taxes 95, 'G', DEFAULTEXECUTE proc_calculate_taxes DEFAULT, 'H', DEFAULTEXECUTE proc_calculate_taxes DEFAULT, 'I', @p3 = DEFAULT java中用程序中的变量去修改数据库表中某行某列的值 查询问题 保存长文章的问题 一个小问题 SQL简单函数求教 服务器端数据库的建立? 雪地裸求高手指点!group by一个麻烦的应用! 我想写这样一个SQL语句,第一次查询取出记录,第二次查询,算出第一次查询取出的记录数,最后返回第一次查询的记录数 insert into person values('CA','Charlene','Altas','01-FEB-02');这条SQL语句有什么错? 为何MSSSQL Server 会这样?[ 超难问题,大师请解答 数据类型问题
但是我看到的一个存储过程里面就是这样写的啊!
调用子存储过程:
exec @a @b,@c,@d
前面的@a和后面的@b没有用‘,’隔开。
这是什么用法呢?表示什么意思啊?
@a 保存存储过程名的变量
@b,@c,@d 是@a的参数
也可能全是字符串,4个组合一起就成了一个完整的SQL语句
执行标量值的用户定义函数、系统过程、用户定义存储过程或扩展存储过程。同时支持 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 ] )
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