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

Sql server 添加sp参数sql server而不修改存储过程请求,sql-server,Sql Server,我有一个名为SPExample的示例存储过程 我想在不使用此语法的情况下将名为TestParam的参数添加到此存储过程中 Alter PROCEDURE SPExample @TestParamint AS BEGIN ... END 是否有类似这样的语法:Alter PROCEDURE SPExample Add parameter…或任何其他替代方法?简短回答: 不,你不能 详细答案: Alter procedure有3种不同的语法,如下所示: SQL Server语法: ALT

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

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

Alter PROCEDURE SPExample
    @TestParamint
AS
BEGIN
... 
END

是否有类似这样的语法:
Alter PROCEDURE SPExample Add parameter…
或任何其他替代方法?

简短回答:

不,你不能

详细答案:

Alter procedure有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 ]  
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 ] } 
ALTER{PROC|PROCEDURE}[schema_name.]PROCEDURE_name
[{@parameter[type\u schema\u name.]data\u type}
[变化][=默认值][[OUT[PUT]
][,…n]
[与[,…n]]
[用于复制]
作为
{[…n]}
[;]  
::=   
[加密]
[重新编译]
[按条款执行]
::=   
{[BEGIN]语句[END]}
请注意,在上述所有3种语法中,
sql\u语句
是语法的一个必需部分。
[
]
中的部分是可选的,请在此处阅读有关Transact-sql语法约定的更多信息:

正如您在上面的语法中看到的,没有任何语法与您请求的语法相同


阅读更多信息:

简短回答:

不,你不能

详细答案:

Alter procedure有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 ]  
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 ] } 
ALTER{PROC|PROCEDURE}[schema_name.]PROCEDURE_name
[{@parameter[type\u schema\u name.]data\u type}
[变化][=默认值][[OUT[PUT]
][,…n]
[与[,…n]]
[用于复制]
作为
{[…n]}
[;]  
::=   
[加密]
[重新编译]
[按条款执行]
::=   
{[BEGIN]语句[END]}
请注意,在上述所有3种语法中,
sql\u语句
是语法的一个必需部分。
[
]
中的部分是可选的,请在此处阅读有关Transact-sql语法约定的更多信息:

正如您在上面的语法中看到的,没有任何语法与您请求的语法相同


请阅读此处的详细信息:

如果不更改存储过程,则无法添加参数。如果要添加新参数时不想编辑存储过程,则更接近的选项是使用默认参数

事情是这样的

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

END

那些为null的参数不会有任何影响

如果不更改存储过程,就不能添加参数。如果您不想在添加新参数时编辑存储过程,更接近的选项是使用默认参数

事情是这样的

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

END

带有null的参数不会有任何影响

否,您必须更改过程并更改其定义才能添加另一个参数。否,您必须更改过程并更改其定义才能添加另一个参数。