您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

表格参数的缺省空

对于表格参数 IN 和 OUT,EMPTY 关键字可用于将空输入表定义为缺省值:

(IN|OUT)  (|) DEFAULT EMPTY

尽管仅输入参数支持常规缺省值处理,但表格 IN 和 DEFAULT EMPTY 参数都支持 OUT。

在以下示例中,将 DEFAULT EMPTY 用于表格输出参数,以便能够声明具有空主体的过程。

CREATE PROCEDURE PROC_EMPTY (OUT OUTTAB TABLE(I INT) DEFAULT EMPTY)

AS

BEGIN

END;

创建不带 DEFAULT EMPTY 的过程会导致错误,指示未指派 OUTTAB。PROC_EMPTY 过程可以照常调用,并返回空结果集:

call PROC_EMPTY (?);

以下示例说明了表格输入参数的用法。

CREATE PROCEDURE CHECKINPUT (IN intab TABLE(I INT ) DEFAULT EMPTY, 

OUT result NVARCHAR(20)

)

AS

BEGIN

IF IS_EMPTY(:intab) THEN

result = 'Input is empty';

ELSE

result = 'Input is not empty';

END IF;

END;

下面是一个在不传递输入表的情况下调用过程的示例。

call CHECKINPUT(result=>?)

这将产生以下结果:

OUT(1)

'Input is empty'

对于函数,只有表格输入参数支持 EMPTY 关键字:

CREATE FUNCTION CHECK_INPUT_FUNC (IN intab TABLE (I INT) DEFAULT EMPTY)

RETURNS TABLE(i INT)

AS

BEGIN

IF IS_EMPTY(:intab) THEN

...

ELSE

...

END IF;

...

RETURN :result;

END;

在不传递输入表的情况下调用函数的示例如下:

SELECT * FROM CHECK_INPUT_FUNC();