我有一个正在执行动态选择查询的存储过程。查询字符串很大。下面是存储过程
创建或替换 程序 My_SP ( procRefCursor out sys_refcursor, --我这里的其他输入变量 ) 是 dynSqlComplete varchar2(8000) := 'n/a'; 开始 dynSqlComplete := '这里的大查询'; 为 dynSqlComplete 打开 procRefCursor; 结尾;
当我运行这个 sp 它显示以下错误
ORA-00600: 内部错误代码, 参数: [qcscbAddToSelLists], [], [], [], [], [], [], [], [], [], [], []
所以我将变量的大小减小dynSqlComplete
到 varchar2(5000),然后运行存储过程。我收到以下错误:
ORA-06502: PL/SQL: 数字或值错误: 字符串缓冲区太小
我徒劳地尝试了很多东西,我也不想在这里添加它们,因为它会误导。
-- 编辑 -- 2012 年 6 月 6 日
大家好,
我能够查明问题,但我还不能解决它。我尝试逐部分运行查询,但发现引发错误的查询。它包含START WITH
,当我评论它时,查询开始起作用。我已经给出了下面的代码并注释掉了给出错误的代码。
选择 RowNum 作为 RowNumber1, GR.*, --LEVEL AS LineageLvl, VDE.* 从 (选择 * FROM group_relations left external join relation_classifier_instances RC on rc.relation_id = group_relations.Group_relation_id WHERE group_relation_type_id IN (19,20,32,38,42,43) 和 (rc.relation_id 为空) ) GR 左外连接 Vendor_Feed_data_elements VDE ON GR.Group_Relation_Type_Id = 19 AND GR.Primary_GroupField_Id = VDE.Vendor_Data_Element_Id /* 给出错误的代码 从...开始 ( VDE.Vendor_Data_Element_Id 不为空) CONNECT BY nocycle 先于 GR.RELATED_GROUPFIELD_ID = GR.PRIMARY_GROUPFIELD_ID*/