0

테이블을 업데이트 할 저장 프로 시저를 만들려고합니다. 프로 시저가 두 테이블을 조인하고 변수 (@tablename)를 사용하여 테이블 이름을 전달하려고합니다.SQL Server 저장 프로 시저의 매개 변수를 사용하여 테이블 이름 전달

이 오류가 생성됩니다

테이블 변수 "@tablename"를 선언해야합니다.

내 코드 : 당신이 어떤 데이터베이스를 포함하는

Create Procedure dbo.SpUpdate (@TableName varchar(50)) 
as 
begin 

DECLARE @SqlText NVARCHAR(MAX) 

SET @SqlText = 
'Update a 
Set AgentNumber=''5'', 
From dbo.CustomerList a 
join ' + QUOTENAME(@tablename) + ' b 
on a.customerid= b.customerid' 

EXEC sp_executesql @SqlText 

end 
+0

체크 아웃 동적 SQL –

+0

업데이트 질문 :이 스크립트를 사용할 수 있습니다

Create Procedure dbo.SpUpdate (@TableName varchar(50)) as begin set @tablename='Customer' Update a Set AgentNumber = '5', From dbo.CustomerList a join @tablename b on a.customerid = b.customerid end 
Twelfth

+0

아래 수정 프로그램 외에도 여기에 몇 가지 다른 문제가 있습니다. 업데이트의 첫 번째 줄 뒤에 쉼표가 있지만 단일 열만 업데이트하고 있습니다. 대소 문자를 구분하는 데이터 정렬이있는 경우 TableName <> tablename –

답변

2

. 확실히 당신은 동적 인 SQL을 여기에 강요 당할 것입니다 ... 나는 당신이 왜 이런 식으로하고 있는지 그리고 당신이 원하는 것을 성취 할 수있는 더 좋은 방법이 있는지 물어볼 것을 제안합니다.