使用JSON输入存储过程以创建表定义

时间:2012-03-20 08:38:38

标签: c# sql json tsql stored-procedures

我要创建一个存储过程来创建一个表来捕获表单数据,这是创建表单生成器的更大项目的一部分。

我想知道是否有人创建了一个存储过程,该过程将字符串化的JSON对象作为输入并基于此模式创建了表?

我仍然在脑子里想着我是否应该在sproc中做这个(更好)或者在C#服务中编写动态sql。

1 个答案:

答案 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 }}'