PL/SQL 查询以检查行的长度
PL/SQL Query to check row's length
我在解决这个问题时遇到了一些麻烦。
我必须检查 table,是否有任何行超过 34 个字符的长度(为此,我使用 Lenght 命令使用查询的第一部分),如果找到, return 变量 'END_CNPJ$' 的错误(由查询的第二部分 'ENDERECO' 填充)因此用户可以看到哪一行的字符数超过 34 个。这段代码是否正确(可能不正确)?如果不是,我该如何解决?
SELECT
LENGTH(CONCAT (CONCAT (CONCAT(CONCAT (CONCAT (CONCAT (CONCAT (
'', T.TTIPO_LOGR),
''), T.TENDERE),
''), T.NNRO_ENDER),
''),T.TCOMPL_ENDER) ),
T.TTIPO_LOGR || ' ' || T.TENDERE || ', ' || T.NNRO_ENDER || ' ' || T.TCOMPL_ENDER || ' - ' || TMUNICI || ' CNPJ: ' || T.NCGC AS ENDERECO
INTO CHARACTER_COUNT$, END_CNPJ$
FROM TBENDER T
WHERE T.CEMPRES = :ENDER_BLK.CEMPRES;
IF CHARACTER_COUNT$ > 34 THEN
MSG_ALERT_COSMO(' You exceeded 34 character for this address: ' || END_CNPJ$ );
RAISE FORM_TRIGGER_FAILURE;
END IF;
我希望我没有违反任何规则,昨天刚到这里:D
TIA
那实际上是 Oracle Forms,不是吗? raise form_trigger_failure
和 :ender_blk
闻起来很香。
在那种情况下,唯一的缺点可能是块项目值的table中没有行的可能性(这将提高no_data_found
)或两行或更多行(然后将引发 too_many_rows)。
除此之外,这个应该没问题。
不过,有点不清楚为什么你很好地连接了 END_CNPJ$
的值(使用双管道 ||
运算符)并为 [=16= 嵌套了那么多 concat
函数].
此外,您没有 post 整个触发器代码(缺少声明、begin-end
关键字,也许还有其他内容)。
但是,正如我所说,一般来说 - 没关系。
我在解决这个问题时遇到了一些麻烦。
我必须检查 table,是否有任何行超过 34 个字符的长度(为此,我使用 Lenght 命令使用查询的第一部分),如果找到, return 变量 'END_CNPJ$' 的错误(由查询的第二部分 'ENDERECO' 填充)因此用户可以看到哪一行的字符数超过 34 个。这段代码是否正确(可能不正确)?如果不是,我该如何解决?
SELECT
LENGTH(CONCAT (CONCAT (CONCAT(CONCAT (CONCAT (CONCAT (CONCAT (
'', T.TTIPO_LOGR),
''), T.TENDERE),
''), T.NNRO_ENDER),
''),T.TCOMPL_ENDER) ),
T.TTIPO_LOGR || ' ' || T.TENDERE || ', ' || T.NNRO_ENDER || ' ' || T.TCOMPL_ENDER || ' - ' || TMUNICI || ' CNPJ: ' || T.NCGC AS ENDERECO
INTO CHARACTER_COUNT$, END_CNPJ$
FROM TBENDER T
WHERE T.CEMPRES = :ENDER_BLK.CEMPRES;
IF CHARACTER_COUNT$ > 34 THEN
MSG_ALERT_COSMO(' You exceeded 34 character for this address: ' || END_CNPJ$ );
RAISE FORM_TRIGGER_FAILURE;
END IF;
我希望我没有违反任何规则,昨天刚到这里:D
TIA
那实际上是 Oracle Forms,不是吗? raise form_trigger_failure
和 :ender_blk
闻起来很香。
在那种情况下,唯一的缺点可能是块项目值的table中没有行的可能性(这将提高no_data_found
)或两行或更多行(然后将引发 too_many_rows)。
除此之外,这个应该没问题。
不过,有点不清楚为什么你很好地连接了 END_CNPJ$
的值(使用双管道 ||
运算符)并为 [=16= 嵌套了那么多 concat
函数].
此外,您没有 post 整个触发器代码(缺少声明、begin-end
关键字,也许还有其他内容)。
但是,正如我所说,一般来说 - 没关系。