oracle 9i 中的动态声明/查询
在 Oracle 中,给定一个表名列表,我想对大量表执行“select column1 into var1 from table”语句。我想对表的所有列执行此操作。在使用 user_tab_columns 的查询返回列的类型之前,我无法声明 var1 的类型。我尝试将 var1 声明为 sys.anytype,但收到 ORA-00932,并显示错误消息,例如“数据类型不一致:预期的 CHAR 为 CHAR”。
那么我该如何克服这个错误或者如何动态声明变量呢?非常感谢。
In Oracle, given a list of table names, I want to perform 'select column1 into var1 from table' statements on a mass number of tables. And I want to do this for all columns of a table. I cannot declare the type of var1 until the query with user_tab_columns returns the column's type. I tried to declare var1 as sys.anytype but got ORA-00932 with error message such as "inconsistent datatypes: expected CHAR got CHAR".
So how can I get past this error or how can I dynamically declare a variable? Many thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
大多数数据类型都会隐式转换为 VARCHAR。显然也有例外,但如果你的表只是 varchars、日期和数字那么你应该没问题。
Most datatypes will implicitly convert into a VARCHAR. Obviously there are exceptions, but if your tables are just varchars, dates, and numbers then you should be fine.
克雷格是对的,你应该将其声明为 VARCHAR2 而不是任何类型。
Jeff Hunter 的这篇文章有一个很好的函数,可以让这一切变得简单以在数据无法转换时不会中断的方式填充变量。
Craig is right you should probably declare it as a VARCHAR2 instad of an anytype.
This article by Jeff Hunter has a nice function that makes this easy to populate your variable in way that won't break if your data can't be converted.