oracle - ORA-00904 解码 oracle 函数的标识符无效
问题描述
我编写了一个简单的 pl\sql 过程来读取 db 上的值。对于相同的值,我使用两个不同的函数最终获得不同的值。
我的代码
begin
select TRIM(SUBSTR(RPAD(VAL,30,'N'),1,1)),DECODE(TRIM(SUBSTR(RPAD(VAL,30,'N'),2,2)),'S',TRUE,FALSE)
into va_flag, amount_zero
from ENV
where USER = 'C' and VARIABLE = 'FLAG_BALANCE';
exception
when others then
amount_zero := FALSE;
va_flag := 'N';
end;
当我编译程序时,我在解码函数上收到错误消息:“ORA-00904 “FALSE” Invalid Identifier”。amount_zero 是一个布尔值。
解决方案
Oracle SQL 不能直接使用布尔数据类型(PL/SQL 可以但 SQL 不行)。
您应该尝试用另一种数据类型替换布尔文字,例如 VARCHAR2 (并调整相关代码):
select
TRIM(SUBSTR(RPAD(VAL,30,'N'),1,1)),
DECODE(TRIM(SUBSTR(RPAD(VAL,30,'N'),2,2)),'S','TRUE','FALSE')
into va_flag, amount_zero
from ENV
推荐阅读
- ios - react-native pjsip 模块 - iOS 背景没有接收
- spotify-docker-client - 如何将卷挂载到容器?
- sas - SAS:使用索引列作为提示的哈希表查找
- css - 仅使用 CSS 从中心旋转三角形图像?
- azure - 在 Azure AD Enterprise 应用程序中跳过 Home Realm Discovery Page 或 Microsoft 登录页面
- javascript - 函数调用内的javascript内联注释
- javascript - 使用最新 jQuery 的视差滚动不起作用
- r - 为 mlogit 设置 data.frame - 错误消息:`row.names<-.data.frame`(`*tmp*`, value = paste(chid, alt, sep = ".")) 中的错误:
- java - 如何解决此问题 (.getDownloadUrl()) 未出现在新版本的 Firebase 数据库中
- sql - 使用 laravel 在迁移中创建带有前缀和自动增量的值