动态 SQL:在存储过程中创建表
问题:
在存储过程中创建表使用表变量的过程是不可行的,因为它创建的是表变量而不是临时变量table.
解决方案:
要在存储过程中动态创建表,需要动态SQL。动态 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'
注意事项:
在存储中动态创建表过程有几个缺点:
替代解决方案:
为了在不同的商店创建多个表,可以采用多对多关系模型。映射表将链接商店和产品,从而确定不同商店中特定产品的最便宜价格。
以上是动态SQL如何解决存储过程建表问题?的详细内容。更多信息请关注PHP中文网其他相关文章!