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 创建返回两个字符串值的过程的主要内容,如果未能解决你的问题,请参考以下文章