SQL Server插入动态参数

时间:2017-08-25 10:11:59

标签: sql sql-server stored-procedures

我正在尝试创建一个动态存储过程,用于在表中插入记录,我传入表名,模式名和插入值参数。

我已经从table参数中选择列名并将其存储在变量中,但我无法管理如何使insert语句工作。

请有人帮我。

这是我的问题:

DECLARE @TableName VARCHAR(100)
DECLARE @SchemaName VARCHAR(10)
DECLARE @Columns NVARCHAR(max)
DECLARE @VALUES NVARCHAR(MAX)

SET @SchemaName = 'dbo'
SET @TableName = 'CLASSROOMS'
SET @Columns = '';
SET @VALUES = 'Classroom1,25'

SELECT @Columns = @Columns + CAST(COLUMN_NAME AS varchar(50)) + ','
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName 
  AND TABLE_SCHEMA = @SchemaName 
  AND ORDINAL_POSITION > 1

SET @Columns = SUBSTRING(@Columns, 1, Len(@Columns) - 1)

--SELECT @Columns

DECLARE @SQL AS NVARCHAR(MAX)

SET @SQL=N'INSERT INTO ' + @TableName + '(' + @Columns + ') VALUES (' + @VALUES + ')'

EXEC sp_executesql @SQL

这里是Classroom表创建脚本:

CREATE TABLE [dbo].[CLASSROOMS]
(
    [ClassRoomID] [INT] IDENTITY(1,1) NOT NULL,
    [ClassRoomName] [NVARCHAR](50) NOT NULL,
    [MaxSits] [INT] NOT NULL,

    CONSTRAINT [PK_CLASSROOMS] 
        PRIMARY KEY CLUSTERED ([ClassRoomID] ASC)
) ON [PRIMARY]

提前谢谢

1 个答案:

答案 0 :(得分:2)

试试这个:

SET @VALUES='''Classroom1'',25'

[ClassRoomName]是一个nvarchar字段。