【问题标题】:Get the result of Select query into a variable and insert it as a column value in another table将 Select 查询的结果获取到变量中,并将其作为列值插入到另一个表中
【发布时间】:2014-06-29 15:48:40
【问题描述】:
DECLARE count NUMBER;

SELECT max(to_number(param_code))+1 INTO count from abc where interface_code='PQR' ;

INSERT INTO abc
( INTERFACE_CODE
, PARAM_CODE
, DSCR
, PARAM_CHAR
, PARAM_NUMBER
, PARAM_DATE
, TRGA_CODE
)
VALUES
(  'PQR'
,   count 
,   'xyz'
,   ''     
,  ''        
,   ''         
,   '*'
)

我想在 Oracle 中将这 3 个语句作为脚本执行。 但这给了我错误。

请帮忙

【问题讨论】:

  • 请提供 Oracle 错误代码/消息。您可能还会想到 Oracle Sequences
  • ORA-06550:第 6 行,第 1 列:PLS-00103:在预期以下情况之一时遇到符号“SELECT”:begin function pragma procedure subtype type 当前光标删除之前存在符号“begin”被替换为“SELECT”以继续。
  • 我不想为此使用 SP
  • 您在DECLARE 块之后错过了BEGIN
  • 即使我添加 BEGIN 和 END,我也会收到以下错误:ORA-06550:第 18 行,第 5 列:PL/SQL:ORA-00936:缺少表达式 ORA-06550:第 7 行,列1:PL/SQL:SQL 语句被忽略 ORA-06550:第 26 行,第 2 列:PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:

标签: oracle plsql toad


【解决方案1】:
DECLARE
  MY_COUNT NUMBER;
BEGIN
  SELECT MAX(to_number(param_code))+1
  INTO MY_COUNT
  FROM abc
  WHERE interface_code='PQR' ;

  INSERT
  INTO abc
    (
      INTERFACE_CODE ,
      PARAM_CODE ,
      DSCR ,
      PARAM_CHAR ,
      PARAM_NUMBER ,
      PARAM_DATE ,
      TRGA_CODE
    )
    VALUES
    (
      'PQR' ,
      MY_COUNT ,
      'xyz' ,
      '' ,
      '' ,
      '' ,
      '*'
    );
EXCEPTION
WHEN OTHERS THEN
 DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/

【讨论】:

  • 表示 Pl/SQL 创建成功
  • BUt 数据未插入表中
  • 现在,记录也被插入了。您可以在同一 SQL 会话中尝试使用 SELECT。和COMMIT它,如果它符合预期!只有这样,它才真正可用。
  • @user2124167 谢谢,很高兴您能接受它作为答案! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多