Sql 如何在存储过程中使用运算符和| |运算符
我在asp.net应用程序中创建了一个数据库文件。现在,我尝试从ServerExplorer编写一个存储过程,如下所示Sql 如何在存储过程中使用运算符和| |运算符,sql,stored-procedures,Sql,Stored Procedures,我在asp.net应用程序中创建了一个数据库文件。现在,我尝试从ServerExplorer编写一个存储过程,如下所示 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)
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
但是当我保存它时,这给了我一个错误,就像您可以使用的附近的错误语法一样!=代替和您可以使用或代替|。您可以使用!=而不是,你可以使用或代替|。这里有几个地方不对劲
if(@oldName <> @Name | @oldAddress <> @Address)
如果@oldName不等于@Name,那么@oldName可以是什么?好的,它可以是NULL,但是如果检查的是NULL,那么使用的运算符是错误的吗
我想你想在这里写的是:
select @oldName=EmployeeName,@oldAddress = Address from Employee where EmpID = @ID
这里有几件事不对
if(@oldName <> @Name | @oldAddress <> @Address)
如果@oldName不等于@Name,那么@oldName可以是什么?好的,它可以是NULL,但是如果检查的是NULL,那么使用的运算符是错误的吗
我想你想在这里写的是:
select @oldName=EmployeeName,@oldAddress = Address from Employee where EmpID = @ID
你应该用还是不用|
您也可以这样做,而不是单独查询和检查每个值,如果名称和/或地址与给定的empid不匹配,这将插入新行
你应该用还是不用|
您也可以这样做,而不是单独查询和检查每个值,如果名称和/或地址与给定的empid不匹配,这将插入新行
SQL只是结构化查询语言-一种被许多数据库系统使用的语言,但不是一种数据库产品。。。像这样的东西是高度特定于供应商的-所以我们真的需要知道您使用的是什么数据库系统和哪个版本…SQL只是结构化查询语言-许多数据库系统使用的语言,但不是数据库产品。。。像这样的东西是高度特定于供应商的-所以我们真的需要知道您使用的是什么数据库系统和哪个版本…感谢Damien如果@oldName@Name或@olddress@Address,它可以工作感谢Damien如果@oldName@Name或@olddress@Address,它可以工作
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