添加sp参数sql server而不修改存储过程请求

时间:2016-06-28 11:22:00

标签: sql-server

我有一个名为SPExample的示例存储过程。

我想在不使用此语法的情况下将名为TestParam的参数添加到此存储过程

Alter PROCEDURE SPExample
    @TestParamint
AS
BEGIN
... 
END

是否有类似Alter PROCEDURE SPExample Add parameter ...或其他替代方法的语法?

2 个答案:

答案 0 :(得分:0)

简答:

不,你不能

详细解答:

Alter程序有3种不同的语法如下:

SQL Server语法:

ALTER { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]   
[ { @parameter [ type_schema_name. ] data_type }   
    [ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY]  
] [ ,...n ]   
[ WITH <procedure_option> [ ,...n ] ]  
[ FOR REPLICATION ]   
AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }  
[;]  

<procedure_option> ::=   
[ ENCRYPTION ]  
[ RECOMPILE ]  
[ EXECUTE AS Clause ]  

SQL Server CLR存储过程语法:

ALTER { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]   
[ { @parameter [ type_schema_name. ] data_type }   
    [ = default ] [ OUT | OUTPUT ] [READONLY]  
] [ ,...n ]   
[ WITH EXECUTE AS Clause ]  
AS { EXTERNAL NAME assembly_name.class_name.method_name }  
[;]  

Azure SQL数据库语法:

ALTER { PROC | PROCEDURE } [schema_name.] procedure_name   
[ { @parameter [type_schema_name. ] data_type }   
[ VARYING ] [= default ] [ [ OUT [ PUT ]   
] [,...n ]   
 [ WITH <procedure_option> [ , ...n ] ]   
 [ FOR REPLICATION ]
 AS   
 { <sql_statement> [...n ] }  
[;]  

<procedure_option> ::=   
[ ENCRYPTION ]  
[ RECOMPILE ]   
[ EXECUTE_AS_Clause ]   

<sql_statement> ::=   
{ [ BEGIN ] statements [ END ] } 

请注意,在上面的所有3种语法中,sql_statement是语法的必需部分之一。 []中的部分是可选的,请在此处阅读有关Transact-SQL语法约定的更多信息:https://msdn.microsoft.com/en-us/library/ms177563.aspx

正如您在上面的语法中所看到的,没有任何语法,例如您请求的语法。

在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/ms189762.aspx

答案 1 :(得分:0)

你不能添加参数而不改变存储过程。如果您想要添加新参数时不想编辑存储过程,则更接近选项是使用默认参数。

这就是这样......

create proc usp_test
(
@param1 int=4,
@param2 int =null,
@param3 int =null
)
as
Begin

END

那些带有null的参数不会产生任何影响