如果在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;