版权声明:本文为博主原创文章,未经博主允许不得转载。 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