我有一个正在执行动态选择查询的存储过程。查询字符串很大。下面是存储过程
创建或替换 程序 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*/