![](/img/trans.png)
[英]Can we use LIKE operator along with MEMBER OF operator in a stored procedure?
[英]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.