2013-12-23 3 views
0

간단하게 가격을 예를 들어 여기 3으로 업데이트하고 싶지만 저장 프로 시저를 사용하십시오.업데이트 절차 오류 구문 근처에 '='

update tblPrijs 
set PrijsVerkoop = PrijsVerkoop + 1 
where PrijsId = '6'; 

를이 잘 작동합니다 :

이미 정상 구문을 시도했다.

하지만 내 저장 프로 시저가 항상 반환

updatetblPrijssetPrijsVerkoop=PrijsVerkoop+3.00wherePrijsId=11 

메시지 102, 수준 15, 상태 1, 줄 1
근처의 구문이 잘못되었습니다 '='.

나는 내가 뭘 잘못했는지 모르겠어요 ..

저장 프로 시저 : 죄송합니다

updatePrice'tblPrijs', 'PrijsVerkoop','3.00', 'PrijsId','11' 

: 이것은 내 쿼리에 쓸 것입니다

alter PROCEDURE updatePrice 
-- Add the parameters for the stored procedure here 
@table nvarchar(50), 
@field nvarchar(50), 
@increase nvarchar(50), 
@id nvarchar(50), 
@value nvarchar(50) 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 
declare @sql as nvarchar(400); 
-- Insert statements for procedure here 
set @sql = 'update' + @table + 'set' + @field + '=' + @field + '+' + @increase + 
'where' + @id + '=' + @value 

print @sql /* drukt het resultaat van concat af */ 
exec(@sql) 
END 
GO 

필드와 테이블의 네덜란드 이름은 ...

잉크는 2012

가 사전에 감사합니다 .. 잘못하지만 난 그냥 그것을 볼 수 이것은 SQL 서버에

뭔가 작은 분명하다!

답변

4

거기에 공백을 추가해야합니다.

이 :

set @sql = 'update' + @table + 'set' [email protected] + '=' ... 

다음과 같은 매개 변수를 추가하는 경우 :

  • @table = SomeTable
  • @field = SomeField

이 SQL 발생합니다 :

updateSomeTablesetSomeField= 

분명히 그것이 당신이 의도 한 것이 아닙니다.

print @sql 문을 실행하기 전에 SQL 문을 인쇄하려고한다고 가정합니다. 그것은 무엇을 보여 줬는가?

set @sql = 'update ' + @table + ' set ' + @field + ' = ' + @field + ' + ' + @increase + ' where ' + @id + ' = ' + @value 

내가 시작과 끝 부분에 각각의 문자열 내부에 공간을 추가 :

여기에 시도하는 일이다. 이러한 공간 중 일부는 엄격하게 필요하지 않지만 결과를 변경하지는 않습니다.

+0

updatetblPrijssetPrijsVerkoop = PrijsVerkoop + 3.00wherePrijsId = 11 이렇게 간단한 공간을 추가해야합니까? ... ''? – user3046998

+0

맨 아래에 새로운 진술을 추가했습니다. 시도해보십시오. –

+0

하나님 감사합니다! 그것은 작은 어리석은 실수입니다!:) 죄송합니다 – user3046998

관련 문제