如何在 Oracle 中将提取的值从 datetime 转换为 char?

How to convert extracted value from datetime to char in Oracle?

我需要在 Oracle PL/SQL 中将日期时间中提取的年份转换为 char 为 char。我怎样才能做到这一点? 代码给了我 PLS-00306: wrong number or types of arguments tips 'TO_CHAR'

create or replace PROCEDURE PrintCustomersKPI IS
  v_average_duration NUMBER;
  v_tab CHAR := chr(9);
BEGIN
   FOR v_year IN (SELECT DISTINCT EXTRACT(year FROM purchaseday) as PurchaseYear FROM Purchase ORDER BY PurchaseYear DESC)
    LOOP
        dbms_output.put_line('YEAR: ' || TO_CHAR(v_year, 'yyyy'));
    END LOOP;
END;
EXEC PrintCustomersKPI;

就是这样

TO_CHAR(v_year.PurchaseYear)

没有别的。

您也可以尝试以下方法。打印结果时必须使用别名列

create or replace PROCEDURE PrintCustomersKPI IS
  v_average_duration NUMBER;
  v_tab CHAR := chr(9);
BEGIN
   FOR v_year IN (SELECT DISTINCT  TO_CHAR(purchaseday, 'YYYY') as PurchaseYear FROM Purchase ORDER BY PurchaseYear DESC)
    LOOP
        dbms_output.put_line('YEAR: ' || v_year.PurchaseYear  );
    END LOOP;
END;
EXEC PrintCustomersKPI;