Sql server 我们可以根据存储过程中的某些条件添加多个update语句吗

Sql server 我们可以根据存储过程中的某些条件添加多个update语句吗,sql-server,stored-procedures,sql-update,Sql Server,Stored Procedures,Sql Update,我想在mssql中创建一个存储过程。根据输入参数,应更新相应的表。例如 CREATE PROCEDURE sp_submitex AS @type int, @ex_cde varchar(10) BEGIN IF @type = 2 THEN UPDATE t1 SET code = @ex_cde ELSE IF @type = 3 THEN UPDATE t2 SET code = @ex_cd

我想在mssql中创建一个存储过程。根据输入参数,应更新相应的表。例如

CREATE PROCEDURE sp_submitex
AS
    @type int,
    @ex_cde varchar(10)
BEGIN
    IF @type = 2 THEN
       UPDATE t1 
       SET code = @ex_cde
 
    ELSE IF @type = 3 THEN
       UPDATE t2 
       SET code = @ex_cde

    ELSE IF @type = 7 THEN
       UPDATE t3 
       SET code = @ex_cde
t1、t2、t3是三个不同的表

是否可以在存储过程中实现上述要求(我在IF-else语句中提到过)


不确定这是否适用于case语句。

旁注:存储过程不应使用
sp
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!是的,您应该能够做到这一点-删除
,然后
尽管-不需要/不允许。不,一个
CASE
表达式在这里不能帮助您-它是一个可以返回单个原子值(在许多选项中)的表达式-但是它不能用于根据条件执行代码块。小细节:
AS
需要位于参数之后(就在
开始之前),如果您确实想在
If
/
ELSE
中执行多个语句,那么您需要使用
开始
结束
,而不是
然后
(如marc_所述)。只需删除
,然后
,再添加一个
结束
,并更正过程的初始声明即可。您需要使用
IF
而不是
CASE
<代码>大小写
是一个表达式,而不是控制流语句。感谢大家的投入。让我试着做上面提到的更改。