如何在T-SQL中的存储过程中动态创建表
创建表变量作为临时表,如提供的所示例如,不正确。要创建临时表,请使用以下语法:
CREATE TABLE #customer ( Name varchar(32) not null )
要声明表变量,请使用以下语法:
DECLARE @Customer TABLE ( Name varchar(32) not null )
动态 SQL 提供了另一种在存储中创建表的方法。程序。您可以将 SQL 语句构造为字符串并执行它:
CREATE PROCEDURE sproc_BuildTable @TableName NVARCHAR(128) ,@Column1Name NVARCHAR(32) ,@Column1DataType NVARCHAR(32) ,@Column1Nullable NVARCHAR(32) AS DECLARE @SQLString NVARCHAR(MAX) SET @SQString = 'CREATE TABLE '+@TableName + '( '+@Column1Name+' '+@Column1DataType +' '+@Column1Nullable +') ON PRIMARY ' EXEC (@SQLString) GO
这个存储过程可以执行如下:
sproc_BuildTable 'Customers','CustomerName','VARCHAR(32)','NOT NULL'
但是,在存储过程中动态创建表一般是不鼓励的原因是:
如果您需要动态创建表,请考虑探索其他解决方案,例如让商店映射到具有定义价格的现有产品表。
以上是如何在T-SQL存储过程中动态建表?的详细内容。更多信息请关注PHP中文网其他相关文章!