PLSQL-ORA-01008-并非所有变量都已绑定

时间:2018-11-30 10:23:57

标签: sql oracle plsql function-call

我正在尝试调用一个非常简单的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 :(得分:0)

您可以尝试以下方法:

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;

/

答案 1 :(得分:0)

如果您使用的是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;