2011-05-11 2 views

답변

0

예, 사용자 정의 함수가 아닌 저장 프로 시저에서이 작업을 수행 할 수 있습니다. 테이블 값 함수를 살펴볼 가치가 있습니다. 동적 테이블을 반환 할 수 있다고 생각합니다. 그러나 저는 이것을 사용하지 않았습니다.

3

모든 종류의 테이블을 반환 할 수 있으므로 저장 프로 시저를 통해이 작업을 수행 할 수 있습니다. 궁금한 점은 무엇을 달성하려는 것이며 데이터에 대해 무엇을 할 것입니까?

+0

피벗 연산을 통해 N 개의 열과 2 개의 행이있는 테이블에 2 개의 열과 N 개의 행이있는 테이블을 전 환합니다. 그래서 전 열을 미리 알지 못합니다. 내가 알 수있는 한, 테이블 스키마를 알지 못한다면 저장된 proc은 테이블을 리턴 할 수 없다. –

+0

아니, sproc 동적 집합을 반환 할 수 있습니다, 그것은 앞에 구조를 알 필요가 없습니다. – RThomas

2

함수와 함께 수행 할 수 없지만 (반환 된 테이블 구조는 미리 정의해야 함) 저장 프로 시저로 수행 할 수 있습니다. 일부 사이비 코드 :

CREATE PROCEDURE Foo 

As 

DECLARE @Command 

SET @Command = 'SELECT * from MyTable' 

-- For debugging, work in an optional PRINT @Command statement 
EXECUTE (@Command) 

RETURN 0 

당신이 저장 프로 시저 푸를 실행하면, 그것은, @Command의 문자열로 쿼리를 작성하고 동적 쿼리 또는 반환되는 내용에 대해 아무것도 모르고 그것을 실행하고 데이터 세트 해당 EXECUTE 문에 의해 반환 된 "프로 시저를 호출 한 프로세스로"전달됩니다.

조심해서 쿼리를 작성하십시오.이 내용은 실제로 디버그하기가 어려울 수 있습니다. 구현에 따라 SQL 주입 공격의 소스가 될 수 있습니다 (스토어드 프로 시저는 실제로 동적 쿼리가 수행 할 작업을 알지 못합니다). 신속한 작업을 위해 EXECUTE()은 제대로 작동하지만 더 안전하고 (정교한) 솔루션의 경우 sp_ExecuteSQL을 참조하십시오.

관련 문제