Oracle:使用 to_lob 从 user_ind_expressions 转换 column_expression 时出现 ORA-00932

发布于 2024-07-06 13:18:16 字数 929 浏览 9 评论 0原文

尝试在 Oracle 10.2 上运行这两个简单的语句:

CREATE TABLE mytest
   (table_name varchar2(30), 
   index_name varchar2(30), 
   column_expression clob,
   column_position number);

INSERT INTO mytest 
  (table_name,
   index_name,
   column_expression, 
   column_position) 
SELECT table_name, index_name,
       to_lob(column_expression), column_position 
FROM user_ind_expressions EXPRA 
WHERE NOT EXISTS 
   (SELECT 1 FROM user_constraints 
    WHERE constraint_name = EXPRA.index_name 
    AND table_name = EXPRA.table_name);

这会导致以下错误:

ERROR at line 1: ORA-00932:不一致的数据类型:预期 - 变得很长

如果我像这样省略 WHERE NOT EXISTS:

INSERT INTO mytest 
   (table_name,index_name,column_expression, column_position) 
SELECT table_name,index_name,
       to_lob(column_expression), column_position 
FROM user_ind_expressions EXPRA;

它有效:

创建了 23 行。

到底是怎么回事?

Try running these two simple statements on Oracle 10.2:

CREATE TABLE mytest
   (table_name varchar2(30), 
   index_name varchar2(30), 
   column_expression clob,
   column_position number);

INSERT INTO mytest 
  (table_name,
   index_name,
   column_expression, 
   column_position) 
SELECT table_name, index_name,
       to_lob(column_expression), column_position 
FROM user_ind_expressions EXPRA 
WHERE NOT EXISTS 
   (SELECT 1 FROM user_constraints 
    WHERE constraint_name = EXPRA.index_name 
    AND table_name = EXPRA.table_name);

This results in this error:

ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got LONG

If I omit the WHERE NOT EXISTS like this:

INSERT INTO mytest 
   (table_name,index_name,column_expression, column_position) 
SELECT table_name,index_name,
       to_lob(column_expression), column_position 
FROM user_ind_expressions EXPRA;

It works:

23 rows created.

What is going on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

糖果控 2024-07-13 13:18:16

如果 Michel Cadot 这是一个错误,那么它几乎当然是一个错误。

If Michel Cadot says its a bug, then its almost certainly a bug.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文