Toad World® Forums

INITIALIZE_FROM_DICT error in 1.6.1


#1

I have a problem with some packages, when I click on ‘Test Builder’.
I get an ‘Send support bundle’ with the following information.

General:
Error code :-6550
Error name: system error
error details.
ORA-06550: row 3, column 16:
PLS-00302: component ‘INITIALIZE_FROM_DICT’ must be declared
ORA-06550: row 3, column 2:
PL/SQL: Statement ignored

Environment;
declare
begin
QU_HARNESS_XP.INITIALIZE_FROM_DICT
(
HARNESS_ID_IN => :HARNESS_ID_IN
,
MSG_OUT => :MSG_OUT
);
end;

Please advice.

Thomas Malmberg


#2

Sadly, Thomas, this error most likely occurs because the formatting technology we are using does not support all 10g syntax.

Does this irritating reality ring any bells in terms of the code on which it is failing? If you could send me your package spec, steven.feuerstein@quest.com, I could look it over.

You can also try formatting the code in Toad and see if you get a failure there. Should be the same issue.

Regards, SF


#3

Hi Stephen,

Thank’s for the advice, your are right, I get an error when I format the code i toad.
The problematice code seems to be RESULT_CACHE.
Maybe we are a bit early implementing this new feature in our code.

Best regards
Thomas


#4

Well…ideally, no you are not early. You are right "on time’ - Oracle11 is after all in production. Sadly, we have not been able to keep up, so to use this code in Code Tester, you need to comment out the RESULT_CACHE phrase.

SF


#5

ok, do you have an ETA for this to work in code tester?

Thomas


#6

Hi Thomas,

Until this is fixed, another workaround you can use is to create a proxy program that
calls your actual program containing the RESULTS_CACHE keyword.

Like this:

CREATE OR REPLACE PACKAGE MY_ORIG_PKG
IS
FUNCTION MY_ORIG_FUNC(col1 VARCHAR2, col2 NUMBER)
RETURN NUMBER
RESULT_CACHE;
END;
/
CREATE OR REPLACE PACKAGE BODY MY_ORIG_PKG
IS
FUNCTION MY_ORIG_FUNC(col1 VARCHAR2, col2 NUMBER)
RETURN NUMBER
RESULT_CACHE
is
result number := null;
begin
if col1 = ‘a’ then
result := col2 + 1;
end if;
if col1 = ‘b’ then
result := col2 + 2;
end if;
return result;
end;
END;
/
CREATE OR REPLACE FUNCTION MY_TESTPROXY_FUNC(col1 VARCHAR2, col2 NUMBER)
RETURN NUMBER
IS
BEGIN
return MY_ORIG_PKG.MY_ORIG_FUNC(col1, col2);
END;
/

Now just create your test on MY_TESTPROXY_FUNC. Just remember that you can’t create this proxy program in the same program body as the original or the RESULT_CACHE keyword will interfere. Put it in its own function, procedure or package. I would probably create a package to hold all my test proxies.

Best Regards,
Greg


#7

Good idea!

I will try that,

Thomas


#8

We do not have an ETA for this fix at this time. Might not be for a while.


#9

I’m seeing the same error in one of our packages. If I have some time I’ll try your suggested work around and report back.