2012-03-20 3 views
2

폼 데이터를 캡처하기 위해 테이블을 생성하는 저장 프로 시저를 만드는 것이 폼 생성기를 만드는 더 큰 프로젝트의 일부입니다.테이블 정의를 만들기 위해 JSON 입력을 사용하는 저장 프로 시저

누군가 stringified JSON 개체를 입력으로 사용하고이 스키마를 기반으로 테이블을 만든 저장 프로 시저를 만들었습니까?

나는 spoke (권장) 내에서 이것을 수행해야하는지 아니면 C# Service 내에서 동적 SQL을 작성해야하는지에 대해 여전히 내 머리 속에서 놀고있다.

+0

SQL 버전간에 저장 프로 시저 작성 구문 및 의미가 크게 달라 지므로 SQL 버전이 명시 적으로 언급 된 경우 대답이 커질 수 있습니다. –

답변

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