如何在Teradata存储过程中为IN参数分配默认属性值

时间:2018-09-12 07:31:15

标签: stored-procedures teradata

需要开发一个存储过程以将值插入表中。考虑该表有5列,其中并非所有列值都是用户输入所必需的。存储过程的DDL将类似于

创建或替换过程UPDATE_EMPLOYEE_INFO

     (IN EMPLOYEE_NUMBER CHAR(10),
      IN EMP_DEPT CHAR(3),
      IN PHONE_NUMBER CHAR(4),
      IN JOB CHAR(8),
      IN ELEVEL SMALLINT)

开始

---在此处插入查询---

结束

可以使用命令执行此过程

致电UPDATE_EMPLOYEE_INFO(1,'',1234567890,'admin','')

但是,列EMP_DEPT和ELEVEL不是必须具有值的必填字段。我该如何在存储过程调用中提及采用如下所示的默认值。

致电UPDATE_EMPLOYEE_INFO(1,DEFAULT,1234567890,'admin',DEFAULT)。

基本上,我想使用Teradata-https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_72/sqlp/rbafyprocdefaults.htm

1 个答案:

答案 0 :(得分:1)

没有可选参数。所有参数都是必需的。因此,您可能必须将可选参数传递为null,然后根据参数是否为null来向存储的proc中写入一些条件逻辑。

例如:

CALL UPDATE_EMPLOYEE_INFO(1,NULL,1234567890,'admin',NULL)

Teradata文档说:

  

用于指定输入和输出参数的规则

     

由输入和输出参数组成的调用参数必须为   带有CALL语句提交。不能使用默认参数值   在创建过程时定义; CALL返回错误   如果未指定必需的调用参数。

https://info.teradata.com/HTMLPubs/DB_TTU_16_00/index.html#page/SQL_Reference/B035-1146-160K/cum1472240816735.html