你提的问题不是一两句话说明白的,建议看些相关书籍。
存 储 过 程(语法)
定义新存储过程的语法如下:
CREATE PROC[EDURE] 存储过程名 [;版本号]
[ {@参数1 数据类型} [VARYING] [= 默认值] [OUTPUT],
…… ,
{@参数n 数据类型} [VARYING] [= 默认值] [OUTPUT]
]
[WITH {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} ]
[FOR REPLICATION]
AS
SQL语句
……
创建基本存储过程的语法如下:
CREATE PROC[EDURE] 存储过程名
AS
SQL语句
……
运行存储过程使用EXECUTE语句,其语法如下:
[EXE[CUTE] ] 存储过程名
创建带版本号的存储过程的语法如下:
CREATE PROC[EDURE] 存储过程名 [;版本号]
AS
SQL语句
……
创建带参数的存储过程的语法:
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型,
…… ,
@参数n 数据类型
AS
SQL语句
…
可以通过给参数提供默认值,来增强存储过程。
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型 [= 默认值],
…… ,
@参数n 数据类型 [= 默认值]
AS
SQL语句
……
创建带输出参数的语法如下:
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型 [=默认值] OUTPUT,
……
AS
SQL语句
……
下面是创建存储过程时定义返回状态的语法:
CREATE PROC[EDURE] 存储过程名
@参数 数据类型 [= 缺省值] [OUTPUT],
……
AS
SQL语句
……
RETURN 整型状态值
……
相应地执行存储过程可使用如下语法:
EXECUTE @状态变量 = 存储过程名
@参数 = 表达式 [OUTPUT],
……
以下是输出光标参数的语法:
CREATE PROC[EDURE] 存储过程名
@光标参数 CURSOR VARYING OUTPUT,
……
AS
SQL语句
……
创建重新编译的存储过程的语法如下:
CREATE PROC[EDURE] 存储过程名
[ @参数 数据类型 [VARYING] [=默认值] [OUTPUT],
…… ]
WITH RECOMPILE
AS
SQL语句
……
执行存储过程时在EXECUTE 语句中加入WITH RECOMPILE从句以强制实现重新编译,其语法如下:
EXECUTE 存储过程名
[ @参数名1 = ] 表达式1,
……,
[ @参数名n = ] 表达式n
WITH RECOMPILE
用WITH ENCRYPTION从句隐藏存储过程的文本的语法如下:
CREATE PROC[EDURE] 存储过程名
[ @参数 数据类型 [VARYING] [= 默认值] [OUTPUT],
…… ]
WITH ENCRYPTION
AS
SQL语句
……
修改存储过程的语法如下:
ALTER PROC[EDURE] 存储过程名 [;版本号]
[ {@参数1 数据类型} [VARYING] [= DEFAULT] [OUTPUT],
…… ,
{@参数n 数据类型} [VARYING] [= DEFAULT] [OUTPUT]
]
[WITH {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} ]
[FOR REPLICATION]
AS
SQL语句
……
DROP PROCEDURE语句可删除已经创建的存储过程,语法如下:
DROP PROCEDURE 存储过程1 [, …… , 存储过程n]
定义自动执行存储过程使用系统存储过程sp_procoption,其语法如下:
sp_procoption [ @ProcName = ] '存储过程名'
, [ @OptionName = ] 'starup'
, [ @OptionValue = ] 'TRUE | FALSE'
运行远程存储过程的语法如下:
EXE[CUTE] 服务器名.数据库.所有者.存储过程名