프로그램에서 테이블 이름을 가져올 수 있습니다. 다음 코드처럼저장 프로 시저의 테이블 이름 가져 오기 절차
는 :
Create Procedure [dbo].[sp_SelectAll]
@BankName nvarchar(50)
As
Begin
Select *
From @BankName
End
이 오류 코드입니다.
다른 방법이 있습니까?
프로그램에서 테이블 이름을 가져올 수 있습니다. 다음 코드처럼저장 프로 시저의 테이블 이름 가져 오기 절차
는 :
Create Procedure [dbo].[sp_SelectAll]
@BankName nvarchar(50)
As
Begin
Select *
From @BankName
End
이 오류 코드입니다.
다른 방법이 있습니까?
당신이 좋아하는 수행 할 수 있습니다
간부를 ('선택 *에서'+ @BankName)
하지만하지 좋은 연습이를 사용하는 ..
이 가당신은 동적 SQL에 대해 자세히 배울 수 있습니다 에서 :
http://www.mssqltips.com/tip.asp?tip=1160
http://www.sqlteam.com/article/introduction-to-dynamic-sql-part-1
테이블을 매개 변수화 할 수 없습니다. 동적 SQL을 작성해야합니다. 즉, SQL 문자열을 생성하고 exec를 사용하여 실행해야합니다.
간부는
당신은 제대로 그 일을하기 위해 dynamic SQL
를 사용하여 작업해야이
Create Procedure [dbo].[sp_SelectAll]
@BankName nvarchar(50)
As
Begin
EXEC('Select * from '+ @BankName)
End
시도 (+ @BankName 'SELECT * FROM').
'EXISTS' 테스트를 제외하고 프로덕션 코드에서'select *'를 사용하는 것은 일반적으로 좋지 않습니다. 이 코드에 대한 또 다른 나쁜 느낌이 있습니다 - 결과 집합의 격렬한 결과를 반환 할 수있는 저장 프로 시저를 작성하거나 동일한 구조의 여러 테이블을 가지고있는 경우 중 하나입니다. 이 두 가지 중 하나는 일반적으로 좋지 않은 디자인의 징표입니다. –