【发布时间】:2016-03-02 07:17:29
【问题描述】:
我会将一些输入参数传递给存储过程并在 tem 上进行一些计算。最后我需要检索一些变量。我不会使用数据库中的任何表。
如何使用存储过程只返回变量而不使用Oracle中的任何表?
这是我的代码。
PROCEDURE SP_C3_PSTK_TAKING(
SCUR IN OUT CUST_CUR,
V_OUTLET IN VARCHAR2,
V_DATEOF_STOCK_TAKING IN DATE,
V_PSTK_VALUE IN NUMBER,
V_PSTK_VALUE_TP_CARDS IN NUMBER,
V_ACTUAL_STOCK_SHRINKAGE IN NUMBER,
V_NESCAFE_SHRINKAGE IN NUMBER,
V_ICE_CUBE_SHRINKAGE IN NUMBER,
V_TURN_OVER_FOR_THE_PERIOD IN NUMBER,
V_TP_CARD_SALES_FOR_THE_PERIOD IN NUMBER,
V_STOCK_TAKE_RECEIVED_DATE IN DATE,
V_STOCK_TAKE_DONE_BY IN VARCHAR2 ,
)
IS
TMPSTRSQL CLOB;
TMPSTRSQL1 CLOB;
V_ACTUAL_STOCK_SHRINKAGE_PER NUMBER;
V_TOTAL_SHORTAGE NUMBER;
V_T_OVER_EXCLUDING_TEL_CARDS NUMBER;
V_SHORTAGEPER NUMBER;
V_ALLOWANCE NUMBER;
V_VARIATION NUMBER
OUTLET VARCHAR(100);
DATEOF_STOCK_TAKING DATE;
PSTK_VALUE NUMBER;
PSTK_VALUE_TP_CARDS NUMBER;
ACTUAL_STOCK_SHRINKAGE NUMBER;
NESCAFE_SHRINKAGE NUMBER;
ICE_CUBE_SHRINKAGE NUMBER;
TURN_OVER_FOR_THE_PERIOD NUMBER;
TP_CARD_SALES_FOR_THE_PERIOD NUMBER;
STOCK_TAKE_RECEIVED_DATE DATE;
STOCK_TAKE_DONE_BY VARCHAR(100);
BEGIN
OUTLET := V_OUTLET ;
DATEOF_STOCK_TAKING := V_DATEOF_STOCK_TAKING ;
PSTK_VALUE := V_PSTK_VALUE ;
PSTK_VALUE_TP_CARDS := V_PSTK_VALUE_TP_CARDS ;
ACTUAL_STOCK_SHRINKAGE := V_ACTUAL_STOCK_SHRINKAGE ;
NESCAFE_SHRINKAGE := V_NESCAFE_SHRINKAGE ;
ICE_CUBE_SHRINKAGE := V_ICE_CUBE_SHRINKAGE ;
TURN_OVER_FOR_THE_PERIOD := V_TURN_OVER_FOR_THE_PERIOD ;
TP_CARD_SALES_FOR_THE_PERIOD := V_TP_CARD_SALES_FOR_THE_PERIOD ;
STOCK_TAKE_RECEIVED_DATE := V_STOCK_TAKE_RECEIVED_DATE ;
STOCK_TAKE_DONE_BY := V_STOCK_TAKE_DONE_BY ;
V_ACTUAL_STOCK_SHRINKAGE_PER := V_ACTUAL_STOCK_SHRINKAGE + ((V_ACTUAL_STOCK_SHRINKAGE/ 100) * 29 ) ;
V_TOTAL_SHORTAGE := V_ACTUAL_STOCK_SHRINKAGE_PER + V_NESCAFE_SHRINKAGE + V_ICE_CUBE_SHRINKAGE ;
V_T_OVER_EXCLUDING_TEL_CARDS := V_TURN_OVER_FOR_THE_PERIOD + V_TP_CARD_SALES_FOR_THE_PERIOD ;
V_SHORTAGEPER := V_TOTAL_SHORTAGE * 100 / V_T_OVER_EXCLUDING_TEL_CARDS ;
V_ALLOWANCE := (V_PSTK_VALUE /100 ) * 1 ;
TMPSTRSQL := ' ';
TMPSTRSQL1 := 'select V_ACTUAL_STOCK_SHRINKAGE_PER,V_TOTAL_SHORTAGE,V_T_OVER_EXCLUDING_TEL_CARDS,V_SHORTAGEPER,V_ALLOWANCE from dual';
OPEN SCUR FOR TMPSTRSQL1 || TMPSTRSQL;
END SP_C3_PSTK_TAKING;
【问题讨论】:
-
嗨 Vijayakumar,欢迎来到堆栈溢出。请提供完整代码的片段,并尝试用文字解释问题。
标签: sql oracle stored-procedures