如何执行已经存在的 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_TEXT1
和P3_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;
/
-
创建顶点页面
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)