在签名中,您可以使用 DEFAULT 关键字定义输入参数的缺省值:
IN (||) DEFAULT (|) 下一个示例将说明缺省值的使用。因此,需要以下表:
CREATE COLUMN TABLE NAMES(Firstname NVARCHAR(20), LastName NVARCHAR(20));
INSERT INTO NAMES VALUES('JOHN', 'DOE');
CREATE COLUMN TABLE MYNAMES(Firstname NVARCHAR(20), LastName NVARCHAR(20));
INSERT INTO MYNAMES VALUES('ALICE', 'DOE');
示例中的过程通过给定的输入表和分隔符生成 FULLNAME。其中,默认值用于两个输入参数:
CREATE PROCEDURE FULLNAME(
IN INTAB TABLE(FirstName NVARCHAR (20), LastName NVARCHAR (20)) DEFAULT NAMES,
IN delimiter VARCHAR(10) DEFAULT ', ',
OUT outtab TABLE(fullname NVarchar(50))
)
AS
BEGIN
outtab = SELECT lastname||:delimiter|| firstname AS FULLNAME FROM :intab;
END;
对于表格输入参数 INTAB 定义了缺省表 NAMES 并为标量输入参数 DELIMITER ',' 定义为缺省值。要在签名中使用缺省值,需要使用命名参数传入参数。这意味着调用过程 FULLNAME 并使用缺省值将按如下方式完成:
CALL FULLNAME (outtab=>?);该调用的结果为:
FULLNAME
DOE,JOHN
现在,我们希望传递不同的表,即 MYNAMES,但仍希望使用默认分隔符值,则调用如下所示:
CALL FULLNAME(INTAB=> MYNAMES, outtab => ?)结果显示现在使用了表 MYNAMES:
FULLNAME
DOE,ALICE
备注请注意,输出参数不支持缺省值。