确定输入数据类型Oracle / PLSQL

时间:2016-07-29 13:37:02

标签: oracle plsql triggers

我正在写一个PLSQL 'INSTEAD OF INSERT'触发器,其中ID字段(GID)可以作为字符串或数字插入。如果GID值是一个字符串,我想尝试将其转换为正确的GID(数字),否则如果输入一个数字,脚本将继续。

我在这里努力解决的部分是确定':New.CHART_GID'的数据类型 - 这在PLSQL中是否可行?我无法检查字符串中的字符,因为字符串在某些情况下可能只包含数字。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用TRANSLATE检查是否还有其他数字:

CREATE OR REPLACE TRIGGER trigger_name
INSTEAD OF INSERT
ON table_name
FOR EACH ROW
DECLARE
 vGID INTEGER;
  ...... other things
BEGIN
   IF :New.CHART_GID is not null AND TRANSLATE(:New.CHART_GID,'0123456789',' ') is null THEN
        vGID := TO_NUMBER(:New.CHART_GID);
        .... do what you want with number
   ELSE
       ... do what you want with not number
   END IF;
  .... other things
END;

CHART_GID必须是视图中的varchar2

答案 1 :(得分:0)

我意识到我想要实现的目标实际上是不可能的。对我来说,解决方案实际上是将Chart_no加入视图并插入到GID的任一字段中。如果我输入Chart_no,则会自动填充GID字段,如果输入GID则相同。