2
我要創建一個存儲過程來創建表來捕獲表單數據,這是創建表單生成器的較大項目的一部分。用JSON輸入創建表定義的存儲過程
我想知道是否有人創建了一個存儲過程,該存儲過程將字符串化的JSON對象作爲輸入並基於此模式創建表?
我仍然在這個問題上爭論不休,我是否應該在sproc(最好)或者在C#服務中寫動態sql。
我要創建一個存儲過程來創建表來捕獲表單數據,這是創建表單生成器的較大項目的一部分。用JSON輸入創建表定義的存儲過程
我想知道是否有人創建了一個存儲過程,該存儲過程將字符串化的JSON對象作爲輸入並基於此模式創建表?
我仍然在這個問題上爭論不休,我是否應該在sproc(最好)或者在C#服務中寫動態sql。
就我個人而言,我不會通過將JSON字符串傳遞給存儲過程來解決此問題。但是,如果您希望以此方式執行此操作,則可以將JSON對象直接傳遞給存儲過程,然後如下操作字符串。我提供了代碼來操作表名並根據示例JSON字符串'{TABLENAME:TABLENAME,Fields:{field1:varchar,field2:int}}'創建一個表。然後你必須修改這個以包含基於字符串的字段和數據類型。
CREATE PROCEDURE CreateTableFromJSON
(
@JSON VARCHAR(100)
)
AS
DECLARE @TableName VARCHAR(100)
SET @TableName = SUBSTRING(@json, CHARINDEX(':', @json)+1, CHARINDEX(',', @json) -CHARINDEX(':', @json)-1)
DECLARE @SQL VARCHAR(100)
SET @SQL = 'CREATE TABLE ' + @TableName + ' (ID INT)'
EXEC(@SQL)
GO
EXEC CreateTableFromJSON '{TABLENAME:TABLENAME, Fields: {field1:varchar, field2: int }}'
由於存儲過程創建語法和語義在sql版本之間變化很大,如果明確聲明sql版本,您有機會獲得答案會更大。 – 2012-03-20 12:38:13