>>Hi,
>>
>>I am writing (what appears to be) a simple stored procedure where the first equal sign (=) always shown with squiggly red underline and the message 'Incorrect syntax new ='
>>
>>
>> IF NOT EXISTS (SELECT @InvenPk = INVEN_PK, @UnitPrice = Unit_Price, @CurrStockQty = INSTOCK FROM Parts where inv_code = @Inv_Code)
>>
>>
>>If I remove the first column select the error moves to the next one.
>>
>>What am I missing?
>
>I guess you are trying to use the @ variables later on that is why you are assigning them some value, but I do not think you can (or should if you can) do that, exists should be used to do exactly that, check if there are records meeting the conditions, so a simple
>
>
> IF EXISTS (SELECT 1 FROM Parts where inv_code = @Inv_Code)
>
>
>[Update]
>Another alternative, closer to what I think you want is (from
http://stackoverflow.com/questions/8598740/assigning-a-variable-inside-an-if-exists-clause)
>
>
>SELECT @InvenPk = INVEN_PK, @UnitPrice = Unit_Price, @CurrStockQty = INSTOCK FROM Parts where inv_code = @Inv_Code
>IF @@ROWCOUNT > 0 ...
>
>
>I still found this doubtful as if there are more records complying with your filter you would lose data... (I guess not applicable in this particular case as I guess inv_code is a primary key)
>[/Update]
I understand now your point that when I use the clause IF EXISTS I cannot at the same time assign values. So I will go with the suggestion to use @@ROWCOUNT. And if my logic is correct the SQL Select should not find more than one record/row for the WHERE condition since the column INV_CODE is unique.
Thank you for your help.
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham