添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

我搜索了这个错误,但是由于它非常模糊,我找不到类似的东西来理解问题在哪里。此代码实际上是针对Oracle Apex应用程序的。我实际上有绑定变量而不是数字1和84(我确认它们在我的表中是正确的值),但仍然有相同的错误。

在声明变量之后,它选择一个字符串作为另一个表中一列的名称,并将其放入V_列。

然后我动态地构建一个查询来获取这个列的值,并将其放入v_值中,最后返回一个值(然后在表单文本字段中显示)。不幸的是,它返回ORA00905。

当我尝试使用已知值单独运行SQL命令时,它会运行。所以我认为动态SQL中一定有语法问题。谢谢你的帮助。

DECLARE

V_COLUMN VARCHAR2(50) := 'UNKNOWN';

V_VALUE VARCHAR2(50) := 0;

V_SQL VARCHAR2(500);

BEGIN

SELECT SUB_CAT_ABBREV INTO V_COLUMN FROM SUB_CATEGORY WHERE SUB_CATEGORY_ID = 1;

V_SQL := 'SELECT ' || V_COLUMN || ' INTO V_VALUE FROM PLANNED_EFFORTS WHERE PLAN_ID = 84';

EXECUTE IMMEDIATE V_SQL;

RETURN V_VALUE;

EXCEPTION

WHEN no_data_found THEN

RETURN 'No Data Found Error';

WHEN too_many_rows then

RETURN 'Too many rows';

WHEN OTHERS THEN

RETURN 'Other Error';

我搜索了这个错误,但是由于它非常模糊,我找不到类似的东西来理解问题在哪里。此代码实际上是针对Oracle Apex应用程序的。我实际上有绑定变量而不是数字1和84(我确认它们在我的表中是正确的值),但仍然有相同的错误。在声明变量之后,它选择一个字符串作为另一个表中一列的名称,并将其放入V_列。然后我动态地构建一个查询来获取这个列的值,并将其放入v_值中,最后返回一个值(然后在表单文本字段中显示)。...
ORA -12154:TNS:无法解析指定的连接标识符 ORA -12154:TNS:无监听程序 错误分析一、 PL / SQL 客户端登录到数据库,如果配置错误会有以上错误,如下图。 这个错误主要是 pl / sql 客户端的tnsnames. ora 配置错误,或者是输入 database选项错误。 错误分析二、未配置环境变量 所以解决问题之前一定要配置环境变量TNS_ADMIN path添加;E:\ PL SQL Developer(64)\instantclient_11_2 配置环境变量就是为了让 PL / SQL Developer打开时加载到tnsnames. ora 文件的内容 配置 pl / sql 的Datab
在用 PL / SQL Developer等客户端工具连接 oracle 服务器时出现 ORA -12541:TNS:无监听程序的错误,如下图: 发现原来是 oracle 的监听没有启动,重启监听后就连接成功了,下面跟大家分享一下如何启动 oracle 的监听。 1.在安装 Oracle 服务器的主机上,打开Net Configuration Assistant 2.选择监听程序配置,下一步 3.选择重新配置,下一步   4.选择监听程序,默认,下一步   注:如果你的监听已启动,则出现提示框,选择是   5.选择协议,使用默认的TCP协议,下一步   6.选择端口号,使用标准端口号1521,下一步
向表格中插入记录(insert into)时候,报异常,提示: ORA -00928: 缺失 SELECT 关键字 (missing SELECT keyword) 1、如网上大部分出现的类似,是因为列名上不能添加单引号: 如写成INSERT INTO USERTAB (‘uniPositionCode’,‘transferGroupName’,‘appCode’,‘appName’,‘tran...
select nvl(sum(nvl(t.xxxxxxx,0) * nvl(t.xxxxxxx,1) * nvl(tpdc.xxxxxxx,0)),0) into sp_sum_fee from intf_policy t left join (select * from xxxxxxx where (EXISTS(select * from xxxxxxxwhere xxxxxxx='0104') and xxxxxxx='0104')
你的语句写错了,select maxlogid into oldmaxlogid from maxidtab; str1:='select max(logid) into newmaxlogid from '||username||'.loginfo'; --改成str1:='select max(logid) from'||username||'.loginfo'; execute imm
CREATE OR RE PL ACE PROCEDURE top_movies IS BEGIN FOR movie_rec IN (SELECT movie_title, movie_avg_rating FROM movie ORDER BY movie_avg_rating DESC FETCH FIRST 5 ROWS ONLY) LOOP DBMS_OUTPUT.PUT_LINE(movie_rec.movie_title || ' - ' || movie_rec.movie_avg_rating); END LOOP; END; Error at line 7: PL / SQL : ORA -00933: SQL command not properly ended
该错误是因为 SQL 查询没有正确结束。您需要在 SELECT 语句的末尾添加分号来正确结束语句。请尝试以下代码: CREATE OR RE PL ACE PROCEDURE top_movies BEGIN FOR movie_rec IN ( SELECT movie_title, movie_avg_rating FROM movie ORDER BY movie_avg_rating DESC FETCH FIRST 5 ROWS ONLY DBMS_OUTPUT.PUT_LINE(movie_rec.movie_title || ' - ' || movie_rec.movie_avg_rating); END LOOP; 请注意,FETCH FIRST 5 ROWS ONLY 是 Oracle 12c 及更高版本的语法。如果您使用的是旧版本的 Oracle ,则可以使用类似于以下查询的语法: SELECT * FROM ( SELECT movie_title, movie_avg_rating FROM movie ORDER BY movie_avg_rating DESC WHERE ROWNUM <= 5;