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

参数的缺省值

在签名中,您可以使用 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

备注请注意,输出参数不支持缺省值。