【问题标题】:insert into where clause插入 where 子句
【发布时间】:2019-12-28 15:20:12
【问题描述】:
INSERT INTO LOOPT2 (TOKEN_STATUS) 
      VALUES (1) where Token_NO = :Token_No;

我知道这不适用于哪里 claus 它是一个详细的块请帮助我我所做的是这但对我不起作用请帮助我

DECLARE 
  TOKEN_NO NUMBER;
  TOKEN_STATUS1 NUMBER;
BEGIN
  GO_BLOCK('TOKEN_REC2');
  FIRST_RECORD; 

 LOOP
  BEGIN
     SELECT SR_NO, TOKEN_STATUS 
       INTO TOKEN_NO, TOKEN_STATUS1 
       FROM LOOPT2 
      WHERE TOKEN_STATUS = :TOKEN_NO 
        AND V_ID=1;

   EXCEPTION
   WHEN NO_DATA_FOUND THEN
    INSERT INTO LOOPT2 (TOKEN_STATUS) 
      VALUES (1);
  END;

    EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';
    NEXT_RECORD;
 END LOOP;  

  COMMIT;
END;

【问题讨论】:

  • 有没有人可以回答这个问题:(
  • 你能详细说明你的问题吗?你的问题太模糊了。您想更新 token_no 可用的列 TOKEN_STATUS,如果不可用则 INSERT?
  • 感谢 barbaros 我有一个表 loopt2,它的列 sr_no 等于 TOKEN_NO,它里面有数据,因为我将在表单中输入详细信息块和令牌状态没有任何我想更新的数据当我提交表单并将令牌状态更改为 1 时列为 1 其中 sr_no =:token_no
  • UPDATE LOOPT2 SET TOKEN_STATUS=1 WHERE SR_NO = :TOKEN_NO 就是你想要的吗?没有 PL/SQL 可能是?
  • 亲爱的@MaheswaranRavisankar 我这样做了,但对我不起作用UPDATE LOOPT2 SET LOOPT2.TOKEN_STATUS=1 WHERE LOOPT2.SR_NO = :TOKEN_REC2.TOKEN_NO; COMMIT;

标签: oracle plsql oracleforms


【解决方案1】:

您似乎需要if 声明,例如:

..
EXCEPTION
  WHEN NO_DATA_FOUND THEN
   IF ( TOKEN_NO = :TOKEN_NO ) THEN
    INSERT INTO LOOPT2 (TOKEN_STATUS) 
      VALUES (1);
   END IF;
  END;
..

dual 表:

..
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    INSERT INTO LOOPT2 (TOKEN_STATUS) 
    SELECT 1 FROM DUAL WHERE TOKEN_NO = :TOKEN_NO;
  END;
..

【讨论】:

  • 感谢 barbaros 我尝试了两个不幸的是没有为我工作任何建议一件事是 NO_DATA_FOUND 但我在 SR_NO 中的数据相同但在 Token_status 中没有任何东西对我有用 sql%found 我试过但是当编译它给我错误
  • 不客气@user2943102。您确定 TOKEN_NO=:TOKEN_NO 排序规则还是应该是 TOKEN_STATUS1 = :TOKEN_NO ?顺便说一句,在End 之前取Commit
  • 哦,你是对的 where 子句是 token_no=:token_no 不是令牌状态我改变了但没有工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多