PL/SQL 创建返回两个字符串值的过程

Posted

技术标签:

【中文标题】PL/SQL 创建返回两个字符串值的过程【英文标题】:PL/SQL Create procedure which returns two string values 【发布时间】:2016-12-21 15:55:04 【问题描述】:

我是 SQL 新手,我正在尝试创建一个包含 6 个字符串的过程,例如。 'POLICE' 然后将返回两个子字符串值,例如。 'POL','ICE'

这是我迄今为止尝试过的:

procedure split_string(inputString in string, substr1 in OUT string, substr2 in OUT string)
is
begin
      substr1 := SUBSTR(inputString, 1, 3);
      substr2 := SUBSTR(inputString, 4, 3);
end split_string;

但是这不起作用,我也不确定如何调用这个函数并在代码的其他地方使用它的值。

是这样的吗:

split_string('POLICE') ?

【问题讨论】:

您也必须传递 substr1 和 substr2 占位符。使用split_string('POLICE',substr1,substr2);。然后,您可以使用 substr1 和 substr2,因为由于过程调用,它们将具有更新的值。当然,请使用 VARCHAR2,如下面的答案所示。 【参考方案1】:

使用这个:

CREATE OR replace procedure split_string(inputString in varchar2, 
                                         substr1  IN OUT varchar2, 
                                         substr2  IN OUT varchar2
                                         )
As

begin
      substr1 := SUBSTR(inputString, 1, 3);
      substr2 := SUBSTR(inputString, 4, 3);
END split_string;

用法:

DECLARE
   a   VARCHAR2 (10);
   b   VARCHAR2 (20);
BEGIN
   split_string ('POLICE', a, b);

   DBMS_OUTPUT.put_line (a || ',' || b);
END;

输出

SQL>     

    POL,ICE

    PL/SQL procedure successfully completed.

【讨论】:

好吧,看起来不错。我将如何在其他地方使用此程序?我想在另一个过程中调用它,如下所示: procedure get_date(inputString in string, cRslts out ResultsCursor) 开始打开 ​​cRslts for select distinct column_name from table n where n.column1 in (SUBSTR(ccyPair, 1, 3), SUBSTR(ccyPair, 4 , 3)) 结束 get_date; 好的,谢谢,很好

以上是关于PL/SQL 创建返回两个字符串值的过程的主要内容,如果未能解决你的问题,请参考以下文章

oracle pl/sql 分页

PL/Sql 函数

PL/SQL oracle 过程不返回任何值

返回两个独立表 PL/SQL 的计数之和

Oracle存储过程

Oracle PL SQL:比较两个存储过程返回的引用游标结果