0

아래 시나리오에 가장 적합한 방법은 무엇입니까?SQL 저장 프로 시저의 준비 테이블에서 SQL 스크립트를 실행하는 방법

내 C# 프로그램에서 UPDATE, INSERT, DELETE와 같은 일부 SQL 명령이 있습니다. 내 C# 프로그램 (잘 작동)에서 실행할 수 있지만 저장 프로 시저 중 하나가 마지막 줄에 올 때이 SQL 명령을 실행해야합니다. 그래서 같은 데이터베이스에있는 스테이징 테이블에 sql 명령을 저장하려고합니다. 그리고 나서이 테이블을 저장 프로 시저에서 열고 하나씩 실행하고 싶습니다.

저장 프로 시저 내에서 테이블을 연 다음 일부 조건 (select * from TempStagingTable, customerId = '1000'등)에 따라 테이블을 탐색하는 가장 좋은 방법은 무엇입니까? 10 개의 레코드가 반환되면 루프를 실행하여 "CustomSqlScript"라는 열에 저장된 SQL 명령을 실행합니다.

추신 : SQL 2008 R2를 사용하고 있습니다.

+0

확실하지 않음이 도움이된다면 그냥 일반 예,하지만 난 ~한다. 모든 레코드를 루핑 한 후 동적 SQL을 생성 한 다음 동적 SQL을 실행하기 위해'exec'를 사용하십시오. 한 번에 한 문장 씩 'exec'할 수도 있습니다. – Nilesh

답변

1

글쎄, 처음에는 표 A의 데이터를 선택할 수 있으며 커서를 사용하는 대신 while 루프를 사용하면 커서와 비교하여 성능이 향상되므로 표 B

에서 사전 정의 된 SQL 문을 실행할 수 있습니다.

는 할 SQL 스크립트를 검색 같은

참고 : 나는 어떤 관계의 사용을하지 않은,이

CREATE TABLE test1(
    customSqlScripts VARCHAR(100) 
) 

CREATE TABLE test2(
customer_Id INT PRIMARY KEY , 
first_Name VARCHAR(100), 
last_name VARCHAR(100) 
) 

INSERT INTO test1 VALUES('Select first_Name from test2 where customer_Id=') 
INSERT INTO test2 VALUES('1','Rohit','Tiwari') 

DECLARE @Count INT 
DECLARE @iCount INT=0 
DECLARE @dummysql VARCHAR(100) 

SELECT @Count= Count(*) 
FROM test2 
WHERE last_name='Tiwari' 

WHILE(@icount<@count) 
BEGIN 
    SELECT @dummysql =customSqlScripts 
    FROM test1 
    SET @[email protected]+'1' 
    EXEC (@dummysql) 
    SET @[email protected]+1 
END