【发布时间】:2019-11-20 11:51:03
【问题描述】:
我看了又高又低,但没能弄明白。
我在 Oracle 中定义了这个函数:
FUNCTION MY_FUNCTION(
INPUTVAR1 IN OUT NUMBER,
INPUTVAR2 VARCHAR2
) RETURN NUMBER;
创建这个函数的人基本上是返回输入参数,如果它不为0。否则如果INPUTVAR1为0,它将返回一个新值。我想要那个新的价值。
在 T-SQL 中它是如此简单以至于愚蠢:
DECLARE @MyVar INT = 0;
SET @MyVar = MY_FUNCTION(@MyVar, NULL);
SELECT @MyVar as Result;
但在 Oracle 中,我无法弄清楚如何返回返回值作为结果。这是我目前所拥有的:
DECLARE MyVar NUMBER := 0;
BEGIN
MyVar := MY_FUNCTION(INPUTVAR1 => MyVar, INPUTVAR2 => NULL)
END;
但我不知道如何在结果中使用 MyVar。我绝对不能选择它。我试过DBMS_OUTPUT.PUT_LINE(MyVar);,但没有运气。
有人知道我如何返回MyVar 的值吗?
【问题讨论】:
-
好像
null和zero混淆了...... -
你是怎么运行这个的? SQL*Plus 或其他工具?另外,“返回值”是什么意思?你想在屏幕上看到它,将它返回给调用者,然后在另一个过程中使用它,...?
-
我正在使用 Oracle SQL Developer IDE
-
从您自己的回答来看,您似乎想要返回 result set 或 cursor,而不是函数结果。这个问题在这里得到了回答:stackoverflow.com/a/40360471/230471(也许回答@Aleksej的问题会澄清一些事情。在另一条评论中你提到它是一个ETL工具,尽管上面你说你建议它用于SQL Developer,一个开发IDE。)
-
你抓住了我。在将其移至我的 etl 工具之前,我在 sql developer 中进行了测试。