对于表格参数 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();