如果在PL/SQL中测试,输入格式为xxxx/xx/xx;
如果使用select function_name(xx,xx) from dual; 测试函数时,日期参数需要使用to_date('xxxx-xx-xx','YYYY-MM-DD') 或者date'xxxx-xx-xx' 进行类型转换。
下面是一个函数例子,函数中V_QRP_RQ参数类型为date:
--创建测试表,并插入数据
CREATE TABLE ccb_gyb (
ACCOUNTING_DATE DATE,
RMB_YTD_BALANCE NUMBER,
CNY_YTD_BALANCE NUMBER,
USD_YTD_BALANCE NUMBER
);
CREATE UNIQUE INDEX CCB_GYB_INX ON CCB_GYB (ACCOUNTING_DATE);
INSERT INTO ccb_gyb VALUES (DATE'2017-12-01',12,17,4);
COMMIT;
--创建函数
CREATE OR REPLACE FUNCTION GETCURRBAL(V_QRP_RQ DATE, --报表日期
V_QRP_CODE VARCHAR2 --币种
) RETURN NUMBER IS
V_AMOUNT NUMBER;
V_DATE DATE;
BEGIN
SELECT ACCOUNTING_DATE
INTO V_DATE
FROM CCB_GYB
WHERE ACCOUNTING_DATE = V_QRP_RQ;
IF V_QRP_CODE = 'RMB' THEN
SELECT RMB_YTD_BALANCE
INTO V_AMOUNT
FROM CCB_GYB
WHERE V_QRP_CODE = 'RMB'
AND ACCOUNTING_DATE = V_DATE;
END IF;
IF V_QRP_CODE = 'CNY' THEN
SELECT CNY_YTD_BALANCE
INTO V_AMOUNT
FROM CCB_GYB
WHERE V_QRP_CODE = 'CNY'
AND ACCOUNTING_DATE = V_DATE;
END IF;
IF V_QRP_CODE = 'USD' THEN
SELECT USD_YTD_BALANCE
INTO V_AMOUNT
FROM CCB_GYB
WHERE V_QRP_CODE = 'USD'
AND ACCOUNTING_DATE = V_DATE;
END IF;
RETURN V_AMOUNT;
END;(1)使用PL/SQL调用,输入参数格式为:
(2)使用select调用,如下:
SELECT GETCURRBAL(date'2017-12-1','RMB') FROM dual;
本文介绍了如何在PL/SQL中创建和使用一个函数来获取指定日期的余额。该函数接收日期和货币代码作为参数,并从数据库表中返回相应的余额。文章还提供了创建测试表、插入数据以及创建和调用函数的具体步骤。
436

被折叠的 条评论
为什么被折叠?



