我有一个名为SPExample
的示例存储过程。
我想在不使用此语法的情况下将名为TestParam
的参数添加到此存储过程
Alter PROCEDURE SPExample
@TestParamint
AS
BEGIN
...
END
是否有类似Alter PROCEDURE SPExample Add parameter ...
或其他替代方法的语法?
答案 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的参数不会产生任何影响