我要创建一个存储过程来创建一个表来捕获表单数据,这是创建表单生成器的更大项目的一部分。
我想知道是否有人创建了一个存储过程,该过程将字符串化的JSON对象作为输入并基于此模式创建了表?
我仍然在脑子里想着我是否应该在sproc中做这个(更好)或者在C#服务中编写动态sql。
答案 0 :(得分:0)
我个人不会通过将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 }}'