根据条件动态生成插入语句

时间:2016-01-21 12:34:22

标签: sql sql-server sql-server-2008

我有两个单独的学生表部署。在一种情况下,学生表包含部门ID,在其他情况下,它不包含部门ID。

我有一个共同的帖子部署脚本,用于在学生表中插入值。

CREATE TABLE dbo.Student
(
    DeptId UNIQUEIDENTIFIER,
    StudentName VARCHAR(20)
)
GO

DECLARE @DeptId UNIQUEIDENTIFIER

IF COL_LENGTH('dbo.Department', 'DeptId') IS NOT NULL BEGIN
    SELECT @DeptId = DeptId
    FROM dbo.Department
    WHERE DeptName = 'Computer'
END

INSERT INTO dbo.Student(DeptId, StudentName)
SELECT @DeptId, 'TBAG'

但是当我没有部门ID列时,这个脚本不起作用

消息207,级别16,状态1,行23     列名称“DeptId”无效。

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情,

CREATE TABLE dbo.Student
  (
     DeptId      UNIQUEIDENTIFIER,
     StudentName VARCHAR(20)
  )

GO

IF Col_length('dbo.Department', 'DeptId') IS NOT NULL
  BEGIN
      INSERT INTO dbo.Student
                  (DeptId,
                   StudentName)
      SELECT DeptId,
             'TBAG'
      FROM   dbo.Department
      WHERE  DeptName = 'Computer'
  END
ELSE
  BEGIN
      INSERT INTO dbo.Student
                  (StudentName)
      SELECT 'TBAG'
  END