動態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中文網其他相關文章!