簡體   English   中英

如何將此 pl/sql 更改為函數?

[英]How can I change this pl/sql to a function?

我正在練習小冊子中的練習,因為我只是在 Oracle 中學習 PL/SQL,它想讓我把它變成一個函數,我不知道我該怎么做,因為它不是一個存儲過程,至少我不這么認為是的,並且無需進行任何計算……我應該做什么有任何想法嗎?

DECLARE
my_stdate LEASE.STDATE%TYPE;
my_enddate LEASE.ENDDATE%TYPE;
my_property_no LEASE.PROPERTY_NO%TYPE;

BEGIN
SELECT stdate, enddate, property_no
INTO my_stdate, my_enddate, my_property_no
FROM lease
WHERE lease_no = '&enter_lease_no';
DBMS_OUTPUT.PUT_LINE('Property '||my_property_no||' was leased from '||my_stdate||' and '||my_enddate);
END;
/

替換變量&enter_lease_no是輸入,而DBMS_OUTPUT.PUT_LINE(...)是 PL/SQL 匿名塊的輸出。

要使其成為函數,請將租用編號作為參數(而不是替換變量)傳入並返回要輸出的字符串值。

CREATE FUNCTION test_function(
  enter_lease_no IN LEASE.LEASE_NO%TYPE
) RETURN VARCHAR2
IS
  my_stdate      LEASE.STDATE%TYPE;
  my_enddate     LEASE.ENDDATE%TYPE;
  my_property_no LEASE.PROPERTY_NO%TYPE;
BEGIN
  SELECT stdate, enddate, property_no
  INTO my_stdate, my_enddate, my_property_no
  FROM lease
  WHERE lease_no = enter_lease_no;

  RETURN 'Property '||my_property_no||' was leased from '||my_stdate||' and '||my_enddate;
END;
/

然后可以使用以下方法調用:

BEGIN
  DBMS_OUTPUT.PUT_LINE( test_function( '&enter_lease_no' ) );
END;
/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM