执行 Declare End 部分之后的查询时给我错误

Posted

技术标签:

【中文标题】执行 Declare End 部分之后的查询时给我错误【英文标题】:When executing query that is after Declare End part is giving me error 【发布时间】:2014-01-23 16:13:39 【问题描述】:

我正在运行一个查询,但在此之前,我正在从数据库中执行一个过程,该过程会更改执行该查询的用户的会话访问权限。

Begin End 部分和过程调用的执行执行得很好,但是当它尝试执行 select 查询时,它给了我错误 ORA-06550 PLS 00103: Encountered the symbol WITH。

由于某种原因,我无法执行过程调用,然后执行 select 语句。

请指教。

代码的初始调用是

Begin
 util.change_institutions(a_instition => 900);
End;

With Balance as ( Select * from cbalances where method=100),
User as ( select * from users where user_id = 10132)

Select * from Balance b
Full Join User u  on u.Serno=b.Serno;

我需要在单个会话中执行此操作。有什么想法可以帮助我执行此操作吗?

【问题讨论】:

【参考方案1】:

请在 PL/SQL 块后提供'/'

每条 PL/SQL 语句,只有在给出'/' 时才会真正刷新到数据库引擎。

Begin
 util.change_institutions(a_instition => 900);
End;
/

With Balance as ( Select * from cbalances where method=100),
User as ( select * from users where user_id = 10132)
Select * from Balance b
Full Join User u  on u.Serno=b.Serno;

【讨论】:

+1 可能还值得一提的是,您可能通过删除空行修复了另一个问题。默认情况下,SQL*Plus 不接受 SQL 语句中的空行。 非常感谢您的反馈。通过在 End 下添加 / 来解决问题;行。

以上是关于执行 Declare End 部分之后的查询时给我错误的主要内容,如果未能解决你的问题,请参考以下文章

第三节PL/SQL编程

plsql

oracle declare语句中,怎么才能定义一个变量来作为查询条件,代码如下:

phpMyAdmin 有时在登录时给我“操作超时”

为啥 Wildfly 10 在部署时给我“jdbc:postgresql 不允许空名称段”?

为啥我的编译器在 c++ 中使用动态分配的内存时给我错误