我正在尝试使用SQL创建一个存储过程,这将允许我将多个值插入到多个表中。有些表共享相同的数据,这要求我在每个表中插入相同的值。我尝试使用相同的变量插入,这似乎不起作用。
目标是节省时间,与每次运行一个查询的每个表相比,将数据同时插入所有表会好得多。下面的NULLS实际上表示具有数据的列,为了测试而留下NULL。
我能做些什么让它发挥作用?任何有效的方法的想法?
create proc InsertMultipleValues
(
@BusName varchar (50),
@BusReg varchar (10),
@Invoice varchar (50),
@Receipt varchar (50),
@Total varchar(20),
@KioskID varchar(50),
@Date date
)
AS
Begin
Insert into GAFSupplies values
(newid(), @BusName, @BusReg, @KioskID, @Date, @Invoice, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, @Date)
Insert into GAFLedgers values
(newid(),@Date, NULL, @KioskID, NULL, NULL, @BusName, NULL,
@Invoice, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @Date)
Insert into Renewals values (newid(), @BusReg, NULL, 'T', NULL, NULL,
@BusName, NULL,
900, 'B', NULL, @Receipt, NULL, NULL, @KioskID, NULL, @Date)
End
The screenshot shows the error when running the stored procedure
答案 0 :(得分:0)
似乎你缺少某些列的值。在Insert语句
中提供列名插入GAFSupplies(Column1,Column2)值(1,'测试')
答案 1 :(得分:0)
此错误即将发生,因为表中的列和输入值不匹配。 因此,在insert查询中指定列名和值 例如:
INSERT INTO TABLE (COLUMN1, COLUMN2,COLUMN3) VALUES (VALUE1,VALUE2, VALUE3)
这是最好的做法。在这种情况下,如果你在表中添加一个额外的列(用于临时目的),它将不会影响现有的插入查询。