【儲存過程】java呼叫 hana 的儲存過程
阿新 • • 發佈:2018-12-17
一)儲存過程寫法如下:
CREATE PROCEDURE "HANA_BI"."com.WFJ.OFFLINE.PROCEDURES::TEST" (P_INT INT, out V_RESULT nvarchar(1000)) LANGUAGE SQLSCRIPT SQL SECURITY INVOKER --DEFAULT SCHEMA <default_schema_name> --READS SQL DATA AS BEGIN /***************************** Write your procedure logic *****************************/ IF P_INT = 0 THEN SELECT '資料驗證成功' INTO V_RESULT FROM DUMMY; ELSE SELECT '資料驗證失敗,資料差異如下:<br>' || string_agg('門店:' || store_name || '(' || store_id || ') ,年份:' || year_code || ',月份:' || month_code || ',超市合計:' || SUPER_SUM || ',零本合計:' || STORE_SUM,';<br>') INTO V_RESULT FROM ( SELECT '大樓' AS STORE_NAME ,'21011' AS STORE_ID,'2018' AS YEAR_CODE,'09' AS MONTH_CODE,'200' AS SUPER_SUM,'205' AS STORE_SUM FROM DUMMY union all SELECT '大樓','21011','2018','10','200','205' FROM DUMMY ) ; END IF; END;
二)java寫法如下:
public static void main(String[] args) throws Exception { try { Connection conn = DataBaseDaoImpl.getConnection(); //建立儲存過程的物件 CallableStatement c=conn.prepareCall("{call \"HANA_BI\".\"com.WFJ.OFFLINE.PROCEDURES::TEST\" (?,?) }"); //給儲存過程的引數設定值 c.setInt(1,1); //將第一個引數的值設定成100 //註冊儲存過程的第二個引數 c.registerOutParameter(2,java.sql.Types.VARCHAR); //執行儲存過程 c.execute(); //得到儲存過程的輸出引數值 System.out.println (c.getString(2)); conn.close(); }catch (Exception e) { e.printStackTrace(); } }
--over