mssql exec 예제

테스트 1 : 오류 사용 어드벤처웍스; GO —-이 첫 번째 독립적으로이 오류 sp_helptext `dbo.uspPrintError` GO —-이 두 번째 독립적으로 이 두 번째를 실행합니다이 잘 작동하는지 `dbo.uspPrintError` GO 테스트 2 : EXEC는 오류를 방지 사용 어드벤처 웍스; GO —-이 첫 번째 독립적으로이 오류 선택을 throw합니다 *에서 Sales.Individual sp_helptext `dbo.uspPrintError` GO —-이 두 번째 독립적으로이 잘 작동합니다 * 판매에서.개별 EXEC sp_helptext `dbo.uspPrintError` GO 테스트 2 EXEC 또는 EXECUTE를 사용하는 것이 항상 저장 프로시저를 실행하므로 EXEC를 사용하지 않을 경우 SQL SERVER를 혼동하여 명령을 잘못 해석하고 오류를 만들 수 있음을 나타냅니다. @로 시작하지 않고 따옴표로 묶이지 않는 단일 단어를 전달하는 경우 ( 예 : 매개 변수 이름에서 @ 잊어 버린 경우 ) 은 누락 된 따옴표에도 불구하고 nvarchar 문자열로 처리됩니다. 동적 SQL을 사용하여 런타임에 일부 명령을 실행하고 INSERT INTO 문을 사용하여 임시 테이블에서 매개 변수로 된 executesql의 출력을 일시적으로 유지하는 저장 프로시저가 있습니다. 동적 SQL은 런타임에 만들고 실행한 SQL입니다. 복잡하게 들리지만 실제로는 그렇지 않습니다. SQL 문은 저장 프로시저에 직접 입력하는 대신 먼저 빌드되고 변수로 정의됩니다. 다음 예제는 테이블을 만들고 AS USER 절을 지정하는 Transact-SQL 문자열을 실행하여 호출자에서 User1로 문의 실행 컨텍스트를 전환합니다. 데이터베이스 엔진은 명령문이 실행될 때 User1의 사용 권한을 확인합니다. User1은 데이터베이스에 사용자로 있어야 하며 Sales 스키마에서 테이블을 만들 수 있는 권한이 있어야 하거나 명령문이 실패합니다. 자동으로 실행되는 프로시저의 결과 집합을 반환하지 마십시오.

프로시저는 응용 프로그램이나 사용자가 아닌 SQL Server에서 실행되고 있으므로 결과 집합이 아무 데도 없습니다. 다음 예제에서는 EXECUTE변수를 포함하는 동적으로 빌드된 문자열을 처리하는 방법을 보여 주었습니다. 이 예제에서는 AdventureWorks2012 데이터베이스의 모든 사용자 정의 테이블 목록을 보관하도록 tables_cursor 커서를 만들고 해당 목록을 사용하여 테이블의 모든 인덱스를 다시 작성합니다.