【存储过程】java调用 hana 的存储过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/happydecai/article/details/83304822

一)存储过程写法如下:

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

猜你喜欢

转载自blog.csdn.net/happydecai/article/details/83304822
今日推荐