2012-12-28 36 views
1

我在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 

寫一個存儲過程,但這個是給我時,我保存它像Incorrect syntax near <錯誤..

+0

*** *** SQL只是*結構化查詢語言* - 許多數據庫系統中使用的語言,但沒有AA數據庫產品......像這樣的東西是非常特定於供應商 - 所以我們真的需要知道你正在使用的數據庫系統**(和哪個版本)...... –

回答

4

有幾件事情錯在這裏

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

都不行 - 也許嘗試

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

當然,這絕不會因爲路以上兩個疑問是正確的(這可能並應該只是一個查詢分配兩個變量)確保變量總是相等的。

即:

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

什麼可以@oldName是,如果不等於@Name? (好吧,這可能是NULL,但隨後<>是錯誤的操作,如果NULL使用的是你要檢查什麼)

認爲你想在這裏寫的是什麼:

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

感謝Damien它與'if @oldName <> @Name或@oldAddress <> @ Address'一起使用 – Dotnet

0

可以使用!=而不是「<> 「你可以使用Or來代替」|「。

1

您應該使用OR而不是|

你也可以做的,而不是查詢並單獨檢查每個價值這一點,這將插入新行如果name和/或address不匹配˚F或給予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