简体   繁体   中英

Issue with PL/SQL Output

I created this procedure in Oracle SQL Developer.

CREATE OR REPLACE PROCEDURE CUST_NAME_LIMIT(
I_CUSTOMER_NUM IN CUSTOMER.CUSTOMER_NUM%TYPE,
I_CUSTOMER_NAME OUT CUSTOMER.CUSTOMER_NAME%TYPE,
I_CREDIT_LIMIT OUT CUSTOMER.CREDIT_LIMIT%TYPE)
AS
BEGIN
SELECT CUSTOMER_NAME, CREDIT_LIMIT
INTO
I_CUSTOMER_NAME, I_CREDIT_LIMIT
FROM
CUSTOMER
WHERE
CUSTOMER_NAME = I_CUSTOMER_NAME;
DBMS_OUTPUT.PUT_LINE(I_CUSTOMER_NAME);
DBMS_OUTPUT.PUT_LINE(I_CREDIT_LIMIT);
END;

When I try to display the output with this below I get an error

BEGIN
CUST_NAME_LIMIT('126');
END;

It should out put TOYS GALORE 7500

Only if you told us which error you got, instead of letting us guess. But hey, it is more fun this way!

As you declared a procedure to accept one IN and two OUT parameters:

create or replace procedure cust_name_limit(
  i_customer_num in customer.customer_num%type,
  i_customer_name out customer.customer_name%type,
  i_credit_limit out customer.credit_limit%type)
as
begin
  select customer_name, credit_limit
  into i_customer_name, i_credit_limit
  from customer
  where customer_name = i_customer_name;
end;

you have to do the same when calling it:

declare
  l_custname customer.customer_name%type;
  l_credlim  customer.credit_limit%type;
begin
  CUST_NAME_LIMIT('126', l_custname, l_credlim);

  dbms_output.put_line(l_custname ||' - '|| l_credlim);
end;
/

Displaying the result from within the procedure doesn't make much sense; do so once it returns values.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM