列名考慮這個腳本爲例與參數存儲過程更新從不同的表
create table Customers
(CustomerId int not null
,StoreId int
,primary key(CustomerId)
)
go
create table Stores
(StoreId int
,StoreName varchar(50)
,primary key(StoreId)
)
go
alter table Customers
add foreign key (StoreId)
references Stores(StoreId)
go
insert into Stores
values (1,'Biggest Store')
,(2,'Mediumest Store')
,(3,'Smaller Store')
,(4,'Smallest Store')
go
insert into Customers
values
(1,1)
,(2,1)
,(3,2)
,(4,3)
,(5,4)
比方說,我想用調用的存儲更新spUpdateCustomerInformation
它有兩個參數:一個是CustomerId
,另一個是用戶希望更新的商店的名稱(Stores表中的StoreName)。因此,在Customers
表中,記錄(1,1)
意味着客戶1從Biggest Store
買了東西。我想將兩個參數傳遞給存儲過程(如spUpdateCustomerInformation 1,'Smallest Store'
),並且在存儲過程運行後,現在的(1,1)
記錄爲 (1,4)
。我的嘗試
create proc spUpdateCustomerInformation
@CustomerId int
,@StoreName varchar(50)
as begin
update c
set c.StoreId = s.StoreId
from customers as c
inner join Stores as s
on s.StoreId = c.StoreId
where c.CustomerID = @CustomerId
and s.StoreName = @StoreName --failing here
end
返回0行更新。我知道我可以簡單地將StoreId作爲第二個參數傳遞給存儲過程,但我想知道是否可以這樣做,通過StoreName
作爲第二個參數。假設這不是一個人爲的情況,CustomerId
也必須作爲參數傳遞。
這還沒有穿過我的分鐘。 – wootscootinboogie