【发布时间】:2017-04-19 23:52:45
【问题描述】:
我想运行一个 SELECT 语句,导出一个值,然后将该值插入到表中。我的代码如下所示:
CREATE OR REPLACE PROCEDURE ADDR
IS
L_SQL_ERR_MSG VARCHAR2 (250);
CURSOR CUR_ADDRESSES
IS
SELECT
CASE WHEN PPD.SP_ID ='11'
THEN 'BILLING'
WHEN PP_D.SP_ID ='157'
THEN 'MAILING'
ELSE NULL
END AS TYPE
FROM
SPEC_DEGREE PP_D
WHERE PP_D.SP_ID ='11' --Currently just to extract one row
AND PP_D.DEGREE ='DO';
BEGIN
FOR RCD IN CUR_ADDRESSES
LOOP
BEGIN
INSERT INTO ADDITIONAL_ADDR (
ID,
NUM,
STATE,
START_DATE,
TYPE)
VALUES (
'1',
'12345',
'CT',
TO_DATE('01-01-2020', 'MM-DD-YYYY'),
TYPE );
EXCEPTION
WHEN OTHERS
THEN
L_SQL_ERR_MSG := SQLERRM;
DBMS_OUTPUT.put_line (SQLERRM);
END;
END LOOP;
END ADDR;
/
我现在知道我无法将列添加到插入语句中,但我希望有一种方法可以添加这个派生值。对 PL/SQL 来说相当新。有什么想法吗?如果您需要更多详细信息,请告诉我。
【问题讨论】:
-
这里不清楚。您想向表中不存在的列插入值吗?你不想创建一个视图吗?
-
没有。这需要加载到表中。
-
那么,当没有对应的列时,您希望如何将值保存到表中?您要么必须将列添加到表中,要么为选择创建一个视图,然后添加计算值。
-
我很抱歉。这是一个现有的表。我将值插入到已经创建的表 ADDITIONAL_ADDR 中。