Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql 无法在Apex PL SQL表达式中返回查询输出_Plsql_Oracle Apex - Fatal编程技术网

Plsql 无法在Apex 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

我正在尝试为动态操作编写以下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 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:忽略语句

  • 申报
  • P_注释varchar(100)
  • P_网络服务器varchar(100) 我不确定我遗漏了什么。

    (因为您没有发布任何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'
    ),例如:

    (因为您没有发布任何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
    设置为要返回的项目?