如果在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'-12-01',12,17,4);COMMIT;--创建函数CREATE OR REPLACE FUNCTION GETCURRBAL(V_QRP_RQ DATE, --报表日期V_QRP_CODE VARCHAR2 --币种) RETURN NUMBER ISV_AMOUNT NUMBER;V_DATE DATE;BEGINSELECT ACCOUNTING_DATEINTO V_DATEFROM CCB_GYBWHERE ACCOUNTING_DATE = V_QRP_RQ;IF V_QRP_CODE = 'RMB' THENSELECT RMB_YTD_BALANCEINTO V_AMOUNTFROM CCB_GYBWHERE V_QRP_CODE = 'RMB'AND ACCOUNTING_DATE = V_DATE;END IF;IF V_QRP_CODE = 'CNY' THENSELECT CNY_YTD_BALANCEINTO V_AMOUNTFROM CCB_GYBWHERE V_QRP_CODE = 'CNY'AND ACCOUNTING_DATE = V_DATE;END IF;IF V_QRP_CODE = 'USD' THENSELECT USD_YTD_BALANCEINTO V_AMOUNTFROM CCB_GYBWHERE V_QRP_CODE = 'USD'AND ACCOUNTING_DATE = V_DATE;END IF;RETURN V_AMOUNT;END;
(1)使用PL/SQL调用,输入参数格式为:
(2)使用select调用,如下:
SELECT GETCURRBAL(date'-12-1','RMB') FROM dual;