如何执行已经存在的 PL/SQL。 (甲骨文 APEX 21.1)

Posted

技术标签:

【中文标题】如何执行已经存在的 PL/SQL。 (甲骨文 APEX 21.1)【英文标题】:How to execute PL/SQL that already exists. (Oracle APEX 21.1) 【发布时间】:2022-01-21 18:52:49 【问题描述】:

如何显示 PL/SQL "PR_TEXT_CONCAT" 的结果?

我想将该结果显示到 Page3。此页面有 3 个文本字段和 1 个按钮。

P3_TEXT1P3_TEXT2中输入文字,然后按下按钮(P3_EXECUTE),在P3_TEXTOUT上显示字符串P3_TEXT1 + P3_TEXT2。 该过程是使用以下 SQL 创建的。

CREATE OR REPLACE PROCEDURE PR_TEXT_CONCAT

  PARAM1 IN VERCHAR2,
  PARAM2 IN VERCHAR2, PARAM2 IN VERCHAR2,
  PARAMOUT OUT VERCHAR2

IS
BEGIN
    PARAMOUT := 'SHOP: ' || PARAM1 || '+' || PARAM2;
END;

---已添加-- 它是在 PL/SQL 动态内容区域中编写的。 Source - PL/SQL Code: :PARAMOUT := PR_TEXT_CONCAT;

【问题讨论】:

导致错误 XD > ORA-06550:第 1 行,第 7 列:PLS-00306:错误数量或类型的参数 我需要关于如何设置参数/从 PL/SQL 获取返回值的帮助。 【参考方案1】:

以下是如何使用存储过程执行此操作。请注意,您的代码中有一些错误(大括号和“VERCHAR”都未在 ​​oracle 中使用)

    创建过程
CREATE OR REPLACE PROCEDURE PR_TEXT_CONCAT
(
  PARAM1 IN VARCHAR2,
  PARAM2 IN VARCHAR2,
  PARAMOUT OUT VARCHAR2
)
IS
BEGIN
    PARAMOUT := 'SHOP: ' || PARAM1 || '+' || PARAM2;
END;
/
    创建顶点页面
创建一个包含 3 个项目的区域:P1_ITEM1、P1_ITEM2 和 P1_ITEM3 使用“提交页面”操作创建区域按钮 使用点“处理”和代码创建页面进程
PR_TEXT_CONCAT
(
  PARAM1 => :P1_ITEM1,
  PARAM2 => :P1_ITEM2,
  PARAMOUT => :P1_ITEM3
);

这应该可以。在第 1 项和第 2 项中输入一个值,然后单击按钮。 item 3 将包含从存储过程返回的值

【讨论】:

【参考方案2】:

这就是我的做法

创建了 3 个项目 + 1 个按钮 创建一页进程 (1) 运行页面 在字段中输入一些文本 点击按钮看到输出(2)

(1) 内页进程:P2_TEXTOUT := :P2_TEXT1 || :P2_TEXT2;

(2) 示例

第二种方式:

create or replace function textOut (vText_1 in varchar2, vText_2 in varchar2) 
return varchar2 is

vTextOut varchar2(20);

begin

vTextOut := vText_1 || vText_2;

return vTextOut;
end;

然后在你的页面进程源中调用这个函数;

select textOut (:p2_text1, :p2_text2) into :p2_textout from dual;

【讨论】:

感谢您的回答。但说实话,我想更努力地执行,以便我理解存储过程。 (而且那个 SQL 语句在我不知情的情况下发生了变化。除了参数的数量和返回值类型。)现在我正在使用一个简单的 PL/SQL 进行测试。 没问题,我正在编辑答案 再次感谢您!但它的创建过程命令显示一个错误,当我运行它时......我只是试图清除我的错误并返回响应你。谢谢你:) 非常感谢您!我忘记将 Create 语句字从过程更改为函数!它工作得很好。谢谢!!!

以上是关于如何执行已经存在的 PL/SQL。 (甲骨文 APEX 21.1)的主要内容,如果未能解决你的问题,请参考以下文章

如何编写 PL 以返回通过服务总线中的 DB 适配器自动生成强类型 XSD 的多行? (甲骨文 PL/SQL)

如何在 Dbms_output.put_line(''); 中使用 <br> 标签在 PL/SQL 甲骨文中?

PL/SQL 甲骨文 ORA-24344

PL/SQL API 甲骨文

在 Oracle PL/SQL 中生成字母数字序列

使用 callproc 从 django 调用 PL/SQL 过程