저장 프로시저에 대한 문의입니다.
(동적 프로시저로 하는 방법 제외)
Select의 필드명이나 테이블명, Where절의 필드명을 매개변수로 사용할 수 있는지요?
---------------------------------------------
CREATE procedure USP_TEST
(
@strSelect VARCHAR(255),
@strTable VARCHAR(100),
@strWhere VARCHAR(100),
@strValue VARCHAR(100)
)
AS
BEGIN
SET NOCOUNT ON;
SELECT @strSelect
From @strTable
Where @strWhere = @strValue
END
---------------------------------------------
저장 프로시저 실행
EXEC USP_TEST '필드명1, 필드명3, 필드명4', '테이블명', '조건필드명', '조건값'
Comment 4
-
쓸만한게없네(윤선식)
2013.09.12 14:46
-
캡이다
2013.09.12 14:56
가능할까? 라는 호기심에서 올려본 글입니다.
조언 감사합니다.
-
성이[SungE | 추교성]
2013.09.12 15:32
동적 쿼리를 사용하면 비슷하게 가능은 합니다.
대신에 선식님이 말씀하신 부분에 대해서 고려해 보시고 사용하셔야 합니다.
-
여우비™
2013.09.12 18:21
Dynamic SQL을 사용할 수 있도록 sp_executesql을 사용하면 가능합니다.
다만 위에서 말씀하신 부분으로 권장하고 싶진 않습니다.
안녕하세요?
프로시저를 사용하는 가장 큰 이유가 무엇일까요?
바로 실행계획을 재사용해서 성능을 향상시키기 위함입니다.
위 내용은 실행계획 재사용이 안될 뿐 아니라
나중에 프로시저 실행회수에 대한 통계수치를 뽑는다고 해도 저 SP만 엄청나게 많이 실행된 것으로 나오게 될 것입니다.
만약 해당 팀의 관리자가 보신다면, (SQL Server 에 대한 지식이 있으시다면) 상당히 안 좋은 이야기를 들을 것 같네요.
모듈화나 편리성을 위해서라면 Application 의 Business Logic 을 잘 분리하는 것이 훨씬 좋을 듯 합니다.