sql - PL/SQL代码中的 bool 变量声明和用法有什么问题?

标签 sql oracle variables plsql compiler-errors

我正在尝试编译以下PL/SQL:

PROCEDURE SP(INPUT1 IN VARCHAR2)
  V_BOL BOOLEAN := FALSE;
BEGIN
  IF (INPUT1 = 'XYZ')
    THEN V_BOL := TRUE;
  END IF;

  UPDATE T1 /* Line 17 */
  SET T1.C1 = (
    SELECT CASE
      WHEN (V_BOL AND T1.N1 BETWEEN 1 AND 10) THEN 'J' /* Line 20 */
      END
    FROM DUAL)
...

但是出现以下错误:
Error(17,9): PL/SQL: SQL Statement ignored
Error(20,18): PL/SQL: ORA-00920: invalid relational operator

最佳答案

您不能在SQL语句中使用BOOLEAN变量(除非Oracle在最新版本中对其进行了更改),即**V_BOL**无效。

UPDATE T1 SET T1.C1 = 
CASE WHEN (**V_BOL** AND T1.N1 BETWEEN 1 AND 10) THEN 'J' else null end

使用简单的SQL数据类型,即INTEGER(0/1)

关于sql - PL/SQL代码中的 bool 变量声明和用法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51448985/

相关文章:

php - 在哪里实现连续访问计数器?

SQLServer 2008 查找所有行的总和和行的组成部分的总和

sql - 在SQL中按子字符串查找字符串的最快方法?

sql - ORA-01748 : only simple column names allowed here in Oracle

C#:特定于范围的变量绑定(bind)

c# - 如何获取最后插入的ID?

sql - 如何选择一个表中存在但另一个表中不存在的所有 ID

mysql - 每个数据库提供程序类型允许的最大参数数是多少?

variables - Makefile:ifeq 指令将特殊变量与常量进行比较不起作用

php - 在 PHP 中使用带有动态变量名称的大括号