【问题标题】:How to assign default property value for IN parameters in teradata stored procedure如何在 teradata 存储过程中为 IN 参数分配默认属性值
【发布时间】:2019-02-16 18:35:38
【问题描述】:

需要开发一个存储过程来将值插入到表中。考虑该表有 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)

开始

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

结束

这个过程可以通过命令来执行

CALL 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

【问题讨论】:

    标签: stored-procedures teradata


    【解决方案1】:

    没有可选参数。所有参数都是强制性的。因此,您可能必须将可选参数作为 null 传递,然后根据参数是否为 null 将一些条件逻辑写入您的存储过程。

    例如:

    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

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 2017-03-28
      • 2011-09-18
      • 2015-02-18
      相关资源
      最近更新 更多