Plsql 无法在Apex PL SQL表达式中返回查询输出
我正在尝试为动态操作编写以下PL/SQL函数体 动态操作的目的是根据输入参数设置文本区域的值。我尝试的方法是,将值设置为不同选项的变量Plsql 无法在Apex PL SQL表达式中返回查询输出,plsql,oracle-apex,Plsql,Oracle Apex,我正在尝试为动态操作编写以下PL/SQL函数体 动态操作的目的是根据输入参数设置文本区域的值。我尝试的方法是,将值设置为不同选项的变量 declare P_NOTE varchar(100); -- derive value P_WEBSERVER varchar(100); -- derive name begin -- for getting the P_NOTE value select distinct note into P_NOTE from port_mapping w
declare
P_NOTE varchar(100); -- derive value
P_WEBSERVER varchar(100); -- derive name
begin
-- for getting the P_NOTE value
select distinct note into P_NOTE from port_mapping where PLATFORM = :P3_PLATFORM and VERSION = :P3_VERSION;
-- for getting web server value
select CONCAT(P_NOTE,CONCAT('https-',:P3_CLIENT)) into P_WEBSERVER from dual order by 1;
if (:P3_PLATFORM = 'Apache') then
return P_WEBSERVER;
end if;
end;
然而,我得到了错误
ORA-06550:第15行第5列:
PLS-00372:在过程中,返回语句不能包含表达式
ORA-06550:第15行第5列:
PL/SQL:忽略语句
如果这是一个动态操作,并且您发布的代码是“Execute PL/SQL code”类型的真实操作,那么您不能使用
RETURN
。plsql块不是一个函数体(关闭,肯普先生!)。如果要将值从会话状态返回到页面项,则需要使用true操作的“page items to return”项。 这将把已定义页面项目的会话状态放入页面上项目的值中。这意味着您不能使用任何变量仅将内容放入以将其返回到页面,但您需要使用实际的页面项(毕竟,这些是绑定变量)。
为了进一步澄清,您不会写:
return P_WEBSERVER;
但是您必须使用一个页面项,比如说P3_WEBSERVER
,如果它不存在,您需要创建一个,当然:
:P3_WEBSERVER := p_webserver;
当然,您需要确保其中包含正确的值,因为您不能像在代码示例中那样短路(p\u webserver
通常会保留一个值,即使平台不是'Apache'
),例如:
(因为您没有发布任何apex版本,所以本说明涉及4.2版)
如果这是一个动态操作,并且您发布的代码是“Execute PL/SQL code”类型的真实操作,那么您不能使用
RETURN
。plsql块不是一个函数体(关闭,肯普先生!)。如果要将值从会话状态返回到页面项,则需要使用true操作的“page items to return”项。 这将把已定义页面项目的会话状态放入页面上项目的值中。这意味着您不能使用任何变量仅将内容放入以将其返回到页面,但您需要使用实际的页面项(毕竟,这些是绑定变量)。
为了进一步澄清,您不会写:
return P_WEBSERVER;
但是您必须使用一个页面项,比如说P3_WEBSERVER
,如果它不存在,您需要创建一个,当然:
:P3_WEBSERVER := p_webserver;
当然,您需要确保其中包含正确的值,因为您不能像在代码示例中那样短路(p\u webserver
通常会保留一个值,即使平台不是'Apache'
),例如:
只需阅读错误消息: 第15行第5栏 所以,这条线路造成的麻烦:
return P_WEBSERVER;
return
在PL/SQL块中不允许,请使用输出参数返回值
阅读Tom的答案,了解如何操作。只需阅读错误消息: 第15行第5栏 所以,这条线路造成的麻烦:
return P_WEBSERVER;
return
在PL/SQL块中不允许,请使用输出参数返回值
阅读
Tom
的答案,了解如何执行该操作。如果动态操作的“Type”未设置为PL/SQL函数体,我怀疑您会遇到此错误,我认为这是您想要的。旁注:如果:P3_PLATFORM!='Apache'
。如果您的动态操作的“Type”未设置为PL/SQL函数体
,我怀疑您会遇到此错误,我认为这是您想要的。旁注:如果:P3_PLATFORM!='Apache'
。我正在使用Apex 4.2。我使用的是PL/SQL函数块,而不是PL/SQL表达式,因为您把我弄丢了。您是否使用动态动作?这是一个页面过程吗?这段代码是在哪里定义的?我正在处理同样的事情,类似于上面的代码是在一个过程中!然而,:P3_web服务器:=P_web服务器代码>行不会更改文本字段的值!即使我指定了一个静态值@SabaAhang您是否将P3_WEBSERVER
设置为要返回的项目?我使用的是Apex 4.2。我使用的是PL/SQL函数块,而不是PL/SQL表达式,因为您把我弄丢了。您是否使用动态动作?这是一个页面过程吗?这段代码是在哪里定义的?我正在处理同样的事情,类似于上面的代码是在一个过程中!然而,:P3_web服务器:=P_web服务器代码>行不会更改文本字段的值!即使我指定了一个静态值@SABAHANG您是否将P3_WEBSERVER
设置为要返回的项目?