gpt4 book ai didi

oracle - 游标中的 LONG 数据类型错误

转载 作者:行者123 更新时间:2023-12-04 02:50:31 25 4
gpt4 key购买 nike

我正在尝试通过下面的匿名 block 生成假脱机文件,以便找出特定表的 View 。

declare
cursor c1 is select view_name,text from users_view;
rt c1%rowtype;
begin
open c1;
loop
fetch c1 into rt;
exit when c1%notfound;
dbms_output.put_line(rt.view_name || '|' || rt.text);
end loop;
end;

当我运行它时,我收到类似“数字或值错误”的错误,但是如果我从游标定义中删除 text(LONG) 列,该 block 将顺利通过。

我知道我们不能在 where 子句中使用 LONG 数据类型,但它是否也不能在游标中获取?如果是,在这种情况下可以选择什么?

最佳答案

没有直接解决 long 问题,但是如果您想找出哪些 View 引用了特定的表,而不是搜索 View 源,您可以查询数据字典:

select owner, type, name
from all_dependencies
where referenced_type = 'TABLE'
and referenced_owner = user -- or a specific schema
and referenced_name = '<my_table_name>';

这还会列出表上的任何触发器等,因此如果您只对 View 感兴趣,您可以添加 and type = 'VIEW'

当然,这可能只会为您提供一个较小的 View 列表,以便更详细地检查每个 View 如何使用该表,但这比手动搜索所有 300 个 View 更容易......这可能意味着您不需要获取超过 32k 个字符的大 View 的文本,这些字符首先会导致 long 问题。

关于oracle - 游标中的 LONG 数据类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17881329/

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