Как я могу использовать <> оператора и || оператор в хранимой процедуре

Я создал файл базы данных в своем asp.net заявлении. Теперь от исследователя сервера я пытался написать Хранимую процедуру следующим образом

CREATE PROCEDURE insertData
(
@ID int,
@Name varchar(50),
    @Address varchar(50),
@bit BIT OUTPUT
)
as
begin
    declare @oldName as varchar(45)
    declare @oldAddress as varchar(45)

    set @oldName=(select EmployeeName from Employee where [email protected])
    set @oldAddress=(select Address from Employee where [email protected])

    if(@oldName <> @Name | @oldAddress <> @Address)
    insert into Employee(EmpID,EmployeeName,Address)values(@ID,@Name,@Address)
    SET @bit = 1
    END

But this is giving me an error when I am saving it like Incorrect syntax near <..

1
nl ja de
SQL - просто Язык структурированных запросов - язык, используемый многими системами баз данных, но не, продукт базы данных... наполняет как это, очень определенное для продавца - таким образом, мы действительно должны знать что система баз данных (и который версия) you' использование ре....
добавлено автор marc_s, источник

3 ответы

Есть несколько вещей неправильно здесь

if(@oldName <> @Name | @oldAddress <> @Address)

Не будет работать - возможно, пробуют

if @oldName <> @Name OR @oldAddress <> @Address

Конечно, это никогда не будет верно из-за пути два вопроса выше (который мог и должен был просто быть одним вопросом, назначающим обе переменные), удостоверяются, что переменные всегда равны.

Т.е.:

set @oldName=(select EmployeeName from Employee where [email protected])

What can @oldName be, if not equal to @Name? (Okay, it could be NULL, but then <> is the wrong operator to use if NULL is what you're checking for)

Я думаю , что, что вы хотели написать, здесь был:

select @oldName=EmployeeName,@oldAddress = Address from Employee where EmpID = @ID
4
добавлено
Спасибо Дамиан это работает с если @oldName <> @Name ИЛИ @oldAddress <> @Address
добавлено автор Dorababu Meka, источник

You should use OR and not |

You can also do this instead of querying and checking each value separately, this will insert new row if name and/or address do not match for given empid

IF NOT EXISTS (
select * from Employee 
where EmpID = @ID AND EmployeeName = @Name AND Address = @Address)
  insert into Employee(EmpID,EmployeeName,Address)values(@ID,@Name,@Address)
  SET @bit = 1
END
1
добавлено

You can use != instead of "<>" and you can use Or instead of "|".

0
добавлено
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)