【发布时间】:2019-10-01 21:04:43
【问题描述】:
在我的存储过程(插入存储过程)中,我有一个部分用于检查客户是否存在。当我给一个存在的客户名称(varchar)时,没有错误,但是当我插入一个不存在的名称时,它给了我这个错误:
转换 varchar 值“Briggs Standih”时转换失败 数据类型为 int。
Briggs Standih 在我的数据库中是一个不存在的客户。
我不知道错误可能出在哪里...这是我的程序和可执行文件。
create PROCEDURE spNieuweReservering
(
@customer VARCHAR(255),
@date1 date,
@date 2date,
@hotel varchar(40),
@count_person int ,
@emplyeeidint,
@roomidint
)
AS
BEGIN
DECLARE @bookdate date
IF not exists (
SELECT count(*)
FROM customer
WHERE @customer= name
)
BEGIN
raiserror('Deze klant bestaat niet. Controleer de naam of maak een nieuwe klant aan.',16,1)
END
select @customer= customerid
from customer
where @customer= name
select @hotel = hotelid
from hotel
where @hotel = location
SELECT @bookdate= GETDATE()
FROM boeking
begin transaction
INSERT INTO booking values (@bookdate, @count_person, null, @customer, @hotel, @employeeid)
insert into roombooking values (@roomid, @date1, @date2, null, null)
IF @@ERROR <> 0
BEGIN
rollback
raiserror('Er is een fout opgetreden bij het toevoegen van de reservering. Controleer de input',16,1)
return
END
END
commit
exec spNieuweReservering 'Briggs Standih', '2019-08-10', '2019-08-15', 'Eindhoven', 1, 1, 1
希望有人知道我做错了什么。
【问题讨论】:
-
程序的哪一行导致错误?如果这些行是错误发生的地方,请您向我们展示您的预订和房间预订表的架构
-
这是哪个 dbms?
-
SELECT @bookdate= GETDATE() FROM boeking?对于每一行?declare @BookDate as Date = GetDate();怎么样?
标签: sql sql-server tsql stored-procedures types