Error in calling external procedure

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Lisa Tang

    Error in calling external procedure

    Hi,

    I am trying to call a C function from PL/SQL and I encounter
    "ORA-06525 Length Mismatch for CHAR or RAW data". Following is the
    information:

    C function in util.dll:
    INT Scramble(BYTE *input,
    BYTE *key,
    INT which,
    BYTE *output);

    I create the library and PL/SQL body using the following script:
    CREATE OR REPLACE LIBRARY util
    AS
    'E:\Develop\tes t\util.dll';

    CREATE OR REPLACE FUNCTION Scramble
    (plaintext IN RAW,
    key IN RAW,
    which IN PLS_INTEGER,
    ciphertext IN OUT RAW)
    RETURN PLS_INTEGER
    IS EXTERNAL
    LIBRARY util
    NAME "Scramble"
    LANGUAGE C;

    When I test the above function Scramble using the following PL/SQL, I
    receive the error at the beginning of this message.

    DECLARE
    rvalue PLS_INTEGER;
    plaintext RAW(8);
    key RAW(16);
    which PLS_INTEGER;
    ciphertext RAW(8);
    BEGIN
    plaintext := '12345678';
    key := '12345678123456 78';
    which := 0;

    -- SQL error at the following line!!!!!
    -- "ORA-06525 Length Mismatch for CHAR or RAW data"
    rvalue := SCRAMBLE(plaint ext,
    key,
    which,
    ciphertext);
    END;


    Could anyone give me any idea what's wrong with the above code. Thank
    you.

    Cheers,
    LTANG7
  • Putz Ronald

    #2
    Re: Error in calling external procedure

    HY!

    I´ve never tried it with byte. But with char* and string it should work.
    Otherwise you can try to change the in out prefix.

    Ronny

    "Lisa Tang" <ltang7@yahoo.c omschrieb im Newsbeitrag
    news:cc133b78.0 402182303.30ac1 60c@posting.goo gle.com...
    Hi,
    >
    I am trying to call a C function from PL/SQL and I encounter
    "ORA-06525 Length Mismatch for CHAR or RAW data". Following is the
    information:
    >
    C function in util.dll:
    INT Scramble(BYTE *input,
    BYTE *key,
    INT which,
    BYTE *output);
    >
    I create the library and PL/SQL body using the following script:
    CREATE OR REPLACE LIBRARY util
    AS
    'E:\Develop\tes t\util.dll';
    >
    CREATE OR REPLACE FUNCTION Scramble
    (plaintext IN RAW,
    key IN RAW,
    which IN PLS_INTEGER,
    ciphertext IN OUT RAW)
    RETURN PLS_INTEGER
    IS EXTERNAL
    LIBRARY util
    NAME "Scramble"
    LANGUAGE C;
    >
    When I test the above function Scramble using the following PL/SQL, I
    receive the error at the beginning of this message.
    >
    DECLARE
    rvalue PLS_INTEGER;
    plaintext RAW(8);
    key RAW(16);
    which PLS_INTEGER;
    ciphertext RAW(8);
    BEGIN
    plaintext := '12345678';
    key := '12345678123456 78';
    which := 0;
    >
    -- SQL error at the following line!!!!!
    -- "ORA-06525 Length Mismatch for CHAR or RAW data"
    rvalue := SCRAMBLE(plaint ext,
    key,
    which,
    ciphertext);
    END;
    >
    >
    Could anyone give me any idea what's wrong with the above code. Thank
    you.
    >
    Cheers,
    LTANG7

    Comment

    Working...