sql - DBVis/PL SQL: IF EXIST - 如果可能,如何正确构建
问题描述
使用 DBVis SQL 指挥官(因为我在这段代码中使用“开始”和“结束”,我相信这段代码是以 PL SQL 方式执行的)我正在尝试执行我编写的一个 sql 脚本作为我的新“清理扳机”
我试图在此脚本中使用 IF EXISTS 语句来实现仅当某个列确实包含数据(批准或拒绝)时清理
该脚本旨在不使用插入(到其他表)语句(如果使用这些语句,即使没有数据可供它们插入,这些语句也会以不希望的方式触发其他表上的其他触发器),除非实际上有(不null) 某列中的数据:
begin
IF EXISTS (SELECT *
FROM HUB_SEGMENTS
where APP_OR_REJECT = 'APPROVED' or APP_OR_REJECT = 'REJECTED')
THEN
INSERT INTO
HUB_APPROVED (HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE)
SELECT
HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE
FROM
HUB_SEGMENTS WHERE APP_OR_REJECT = 'APPROVED';
INSERT INTO
HUB_REJECTED (HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE)
SELECT
HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE
FROM
HUB_SEGMENTS WHERE APP_OR_REJECT = 'REJECTED';
DELETE
FROM
"TESTDEMO".HUB_SEGMENTS
WHERE
APP_OR_REJECT = 'APPROVED' or APP_OR_REJECT = 'REJECTED';
DBMS_OUTPUT.PUT_LINE('Trigger: Insert to action Tables Executed');
ELSE
DBMS_OUTPUT.PUT_LINE('Trigger: Insert to action Tables Not Executed');
end;
不幸的是,当我尝试运行它时收到以下错误消息:
[代码:6550,SQL 状态:65000] ORA-06550:第 33 行,第 4 列:PLS-00103:遇到符号“;” 预期以下情况之一时:如果
我很确定这取决于我构建 IF EXIST 的方式
当然,在我的 PL SQL 代码中,可能不允许在 DBVis SQL 指挥官中使用 IF EXIST - 我还没有从 oracle 看到很多关于此特定语句的文档。如果是这样,我是否可以尝试另一种方式来完成我在这里尝试做的事情?
任何指导将不胜感激
解决方案
你不需要我相信的如果存在就转
IF EXISTS (SELECT *
FROM HUB_SEGMENTS
where APP_OR_REJECT = 'APPROVED' or APP_OR_REJECT = 'REJECTED')
THEN
INSERT INTO
HUB_APPROVED (HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE)
SELECT
HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE
FROM
HUB_SEGMENTS WHERE APP_OR_REJECT = 'APPROVED';
至
INSERT INTO
HUB_APPROVED (HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE)
SELECT
HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE
FROM
HUB_SEGMENTS where (APP_OR_REJECT = 'APPROVED' or APP_OR_REJECT = 'REJECTED');
推荐阅读
- php - 选择框问题
- javascript - 为 highcharts 地图添加标记点
- airflow - 多个气流调度器
- python - 通过 python linux 运行 python 脚本
- python - 使用 Scikit-learn 顺序编码数据时出错
- javascript - 如何通过从用户输入中获取用户值来动态更改脚本 src?
- hosts - 具有本地 IP 的 /etc/hosts 条目能否使机器面临安全风险?
- javascript - 振动数据的 Javascript 中的 FFT 计算
- processing - 加工中产生柔体的问题
- google-apps-script - 是否有一种机制可以防止脚本在修改或打开工作表时更新 Google 工作表?