如何执行SELECT语句中的INSERT?

时间:2018-10-08 15:12:49

标签: oracle dynamic dynamic-sql insert-select select-insert

对于我的数据库课程,我有一个表:lab4Central,其中的列是:productid,description和plantid, 工厂QRO的id为1000,例如:12799,'Product 12799',1000。 并且工厂SLP的id为2000,例如:29665,“产品29665”,2000。

我必须为其他2个工厂添加新的寄存器:GDA和MTY。 对于GDA,寄存器与工厂QRO相同,但是它已调整了productid + 20000,对于MTY相同,但具有SLP寄存器,因此最后看起来像:

Plant GDA: 329799, 'Product 32799', 3000.
plant MTY: 49665, 'Product 49665', 4000.

对于GDA,您可以看到该寄存器与QRO中的寄存器相同,但是另一个植物编号,我们在productid中添加了20000,与MTY相同。

我将此代码编码为正确的值:

SELECT  'INSERT INTO LAB4CENTRAL VALUES('||(PRODUCTID+20000) || ',' || DESCRIPTION || ','|| 3000 ||');' FROM LAB4CENTRAL WHERE PLANTID=1000;

但这只是一个选择,我不知道如何执行insert语句,因此它将数据插入表中。

希望你能帮助我。

3 个答案:

答案 0 :(得分:1)

您想要的实际上与您编写的相反。取而代之的是Insert... Select...

INSERT INTO LAB4CENTRAL 
SELECT ProductID + 20000, 'Product' || Productid + 20000, 3000 
FROM LAB4CENTRAL 
WHERE PlantID = 1000;

可能需要进行调整以适合您的数据,但是基本思想是编写SELECT语句,该语句为您提供了要插入到表中的结果集。

答案 1 :(得分:0)

生成INSERT语句,然后手动执行,可能是大约100行,这很可能是一个技巧。

否则,将执行INSERT ... SELECT语句。但这对于相同的表是不可能的,因此是这种解决方案。

另请参见输出到文件等(目前尚不知道)。

答案 2 :(得分:0)

假设您要将选择结果插入到ProductId,Description和your_col_fro_3000列中 您可以使用INSERT SELECT

    INSERT INTO LAB4CENTRAL(ProductID, Description, your_col_for_3000) 
    SELECT ProductID + 20000, 'Product' || (Productid + 20000), 3000 
    FROM LAB4CENTRAL 
    WHERE PlantID = 1000;