将相同的变量和值插入多个表中

时间:2017-10-24 09:14:37

标签: mysql sql-server

我正在尝试使用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

2 个答案:

答案 0 :(得分:0)

似乎你缺少某些列的值。在Insert语句

中提供列名

插入GAFSupplies(Column1,Column2)值(1,'测试')

答案 1 :(得分:0)

此错误即将发生,因为表中的列和输入值不匹配。 因此,在insert查询中指定列名和值 例如:

INSERT INTO TABLE (COLUMN1, COLUMN2,COLUMN3) VALUES (VALUE1,VALUE2, VALUE3)

这是最好的做法。在这种情况下,如果你在表中添加一个额外的列(用于临时目的),它将不会影响现有的插入查询。