繁体   English   中英

如何使用<>运算符和|| 存储过程中的运算符

[英]How can I use <> operator and || operator inside a stored procedure

我在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 EmployeeName=@Name)
    set @oldAddress=(select Address from Employee where Address=@Address)

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

但是当我像Incorrect syntax near < .. Incorrect syntax near <那样保存它时,这给了我一个错误。

这里有几处错误

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

无效-可以尝试

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

当然,由于上面的两个查询(可能并且应该只是分配两个变量的一个查询)的方式将确保变量始终相等,因此永远不会如此。

即:

set @oldName=(select EmployeeName from Employee where EmployeeName=@Name)

如果@oldName不等于@Name@oldName是什么? (好吧,这可能是NULL ,但随后<>是错误的操作者使用,如果NULL是你检查什么)

认为您想在这里写的是:

select @oldName=EmployeeName,@oldAddress = Address from Employee where EmpID = @ID

您应该使用OR而不是|

您也可以执行此操作,而不是分别查询和检查每个值,如果name和/或address与给定的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

您可以使用!=代替“ <>”,也可以使用Or代替“ |”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM