2013-12-14 3 views
0

저장 프로 시저가 있습니다. 매개 변수를 추가하여 특정 표의 모든 데이터를 가져 오려고했습니다 (예 : tblJanuary2014). 그러나 서식이 잘못되어있을 가능성이 있습니까?SQL Server 저장 프로 시저 추가 매개 변수 형식

ALTER PROCEDURE GetReportAsOf 
( 
    @Month varchar(15), 
    @Year varchar(15) 
) 
AS 
    BEGIN 
     SELECT * FROM [email protected]@Year 
    RETURN 
    END 

는 실행하는 동안은 말한다 :

잘못된 개체 이름이에

답변

3

당신은 만들어야 동적 SQL 'TBL의 @ 달 년도 @'. I는 INT 사용할 것이다 SQL 주입을 방지하기

ALTER PROCEDURE GetReportAsOf 
( 
    @Month varchar(15), 
    @Year varchar(15) 
) 
AS 
    BEGIN 
     DECLARE @SQLQuery AS NVARCHAR(500) 
     SET @SQLQuery = 'SELECT * FROM tbl' + @Month + @Year 
     EXECUTE(@SQLQuery) 
    RETURN 
    END 
+0

누군가 SP 파라미터 :'EXEC GetReportAsOf @ 월 = '; 표 삭제'@ 연도 = '; DELETE 테이블 2' '. –

1

따라서

@y smallint, @m tinyint 

이것을 실행할 수

declare @sqlstatement nvarchar(max); 

set @sqlstatement = N'select ... from dbo.something' + convert(nvarchar(2), @m) + convert(nvarchar(4), @y); 

exec(@sqlstatement); 
관련 문제