gpt4 book ai didi

c++ - PL/SQL - 设置空值

转载 作者:搜寻专家 更新时间:2023-10-31 00:24:23 25 4
gpt4 key购买 nike

我看到有一个PL/SQL的NVL函数,当遇到null时,用一个值代替。
但是如果我想将一个字段设置为 NULL 怎么办,例如

EXEC SQL UPDATE mytable SET myfield=NULL WHERE otherValue=1;

当我在 HPUX 上使用 C++ 运行此代码时,0L 用于 null,而在 Linux 上该语句因非法值而失败。

是否有我可以使用的通用 Oracle 空值/方法?

最佳答案

哦,现在我意识到一定发生了什么。 C++ 系统 header 具有 #define NULL 0L(在 HPUX 中),因此预处理器将用该值替换硬编码的 NULL。

几个想法:

  • 只需改变SQL语句中NULL的大小写即可。 Oracle 不关心大小写,如果它与定义的版本不完全匹配,它就不会被替换。当然,他们可能将 NULL、Null、null 等都定义为相同的值。
  • 找到一种方法来禁用该行代码周围的 NULL 定义。我假设有一种方法可以做到这一点,但我对预处理器指令不太了解
  • 尝试使用空字符串而不是文字 NULL。 Oracle 应将其转换为 NULL。
  • 将语句的文本存储在配置文件中并将其读入字符串。这样它实际上不会出现在代码中,因此预处理器不会修改它。
  • 在 Oracle 中编写一个只返回 NULL 的函数,并在您的语句中使用该函数而不是 NULL 文字。

关于c++ - PL/SQL - 设置空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/305349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com