PLSQL - ORA-01008 - Не все переменные связаны - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь вызвать очень простую функцию PLSQL, и я не могу догадаться, что я делаю неправильно:

CREATE OR REPLACE PACKAGE BODY KYC_OWN.KYCK_TEMP IS

FUNCTION PrintHelloWorld RETURN VARCHAR2 IS
BEGIN
  RETURN 'Hello World'; 
END printHelloWorld;

END KYCK_TEMP;

Затем я вызываю функцию следующим образом:

call   KYC_OWN.KYCK_TEMP.PrintHelloWorld() INTO :x;

Полагаю, мне нужно где-то объявить переменную x, но как?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Если вы используете SQL * Plus, вы можете создать переменную, а затем использовать ее для хранения возвращаемой функции переменной, например:

VARIABLE x varchar2(30)
call   KYC_OWN.KYCK_TEMP.PrintHelloWorld() INTO :x;
print x

, или вы можете просто использовать анонимный блок вместе сdbms_output для отображения числа:

set serveroutput on -- assuming you're in SQL*Plus
declare
  v_val varchar2(30);
begin
  v_val := KYC_OWN.KYCK_TEMP.PrintHelloWorld;
  dbms_output.put_line('return val = '||v_val);
end;
0 голосов
/ 30 ноября 2018

Вы можете попробовать это:

CREATE OR REPLACE PACKAGE BODY KYC_OWN.KYCK_TEMP IS

FUNCTION PrintHelloWorld RETURN VARCHAR2 IS
BEGIN
  RETURN ('Hello World'); 
END printHelloWorld;

END KYCK_TEMP;

или создать переменную, как показано ниже, и вернуть g_helloworld

create or replace package constants as
g_helloworld constant varchar2(11) := 'Hello World';
function get_helloworld return varchar2;
end constants;

/
create or replace package body constants as
function get_helloworld return varchar2
is
begin
    return g_helloworld;
end get_helloworld;
end constants;

/

...