使用if else创建存储过程

时间:2017-06-27 12:24:41

标签: sql-server stored-procedures

创建一个包含五列A,B,C,D和E的表,其中varchar(100)作为其数据类型。表名称为My_table 编写一个名为Update_Records的存储过程,它将接受1个参数。

@col_name varchar(100)

如果我将任何列名称传递给此过程,它将检查该列是否已存在于表中。如果存在,它将打印'Column already exists'。如果不存在,您将更改My_table并添加该列。输出将是:'表格改变'

例如,如果我将存储过程称为

Exec Update_Records ‘B’

输出将是:

Column already exists.

Exec Update_Records ‘N’

输出将是:

Table Altered

代码

ALTER PROC Update_records (@col_name VARCHAR(100))
AS
  BEGIN
      IF EXISTS (SELECT *
                 FROM   my_table)
        BEGIN
            PRINT 'already exists'
        END
      ELSE
        BEGIN
            PRINT 'Table Altered'
        END

      UPDATE my_Table
      SET    @col_name = @col_name
  END 

1 个答案:

答案 0 :(得分:0)

  • 您正在检查表中是否存在不存在列的记录
  • 您需要Alter语句添加列而不是Update语句

类似这样的事情

IF COL_LENGTH('dbo.my_table', @col_name) IS NOT NULL
BEGIN
    PRINT 'Column already exists'
END
ELSE 
BEGIN 
     SET @col_name = QUOTENAME(@col_name)
     EXEC ('Alter Table my_table ADD '+@col_name+' varchar(100)')
     PRINT 'Table Altered'
END
相关问题