【问题标题】:SQL command not properly ended execute immediate [duplicate]SQL命令未正确结束立即执行[重复]
【发布时间】:2014-05-12 05:25:17
【问题描述】:

我正在尝试执行此代码,但一直收到错误消息“SQL 命令未在第 14 行正确结束” 第 14 行是“立即执行 stmt;”

你能帮帮我吗? 谢谢。

declare 
    f varchar2(4);
    stmt varchar2(200);
    i number;
    e float;
    b float;
    d float;
    begin
    f:='f132';
    execute immediate 'select max('||f||') from testv2_2;' into e;
    execute immediate 'select min('||f||') from testv2_2;' into b;
    d:=(e-b)/20;
    stmt:='update testv2_2 set '||f||' =round('||f||'/'||d||');';
    execute immediate stmt;
    end;

【问题讨论】:

  • 必须检查 SQL stmt 是否直接在 DB 上正确运行?
  • 您应该确定您正在使用哪个 DBMS;这不是不言而喻的。

标签: sql


【解决方案1】:

分号 (;) 是 和其他类似工具中的终止字符 - 它不是 SQL 语法的一部分。因此,它应该被删除。例如:

execute immediate 'select max('||f||') from testv2_2' into e;
execute immediate 'select min('||f||') from testv2_2' into b;

【讨论】:

  • 您假设它是 Oracle — 这可能不是一个错误的假设。 declare 语句中的分号应该换成逗号吗?
猜你喜欢
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
相关资源
最近更新 更多