HANA 存储过程
You can develop secure procedures using SQLScript in SAP HANA by observing the following recommendations.
- Mark each parameter using the keywordsINorOUT. Avoid using theINOUTkeyword.
- Use theINVOKERkeyword when you want the user to have the assigned privileges to start a procedure. The default keyword,DEFINER, allows only the owner of the procedure to start it.
- Mark read-only procedures usingREADS SQL DATAwhenever it is possible. This ensures that the data and the structure of the database are not altered.
Tip Another advantage to usingREADS SQL DATAis that it optimizes performance.
- Ensure that the types of parameters and variables are as specific as possible. Avoid usingVARCHAR, for example. By reducing the length of variables you can reduce the risk of injection attacks.
- Perform validation on input parameters within the procedure.
我是说HANA ,为什么每次后面都加那么一大串。 language sqlscript sql security definer reads sql data
这个可以直接创建的SQL窗口里写也行。不用那么麻烦。
我都不知道这下面这个什么意思。奇奇怪怪的没明白LOGIC。 很可能是随便复制的。
), OUT var_out "_SYS_BIC"."DEMO/DEMO_SQL_CV/proc/tabletype/VAR_OUT" ) language sqlscript sql security definer reads sql data as /********* Begin Procedure Script ************/ BEGIN SELECT CURRENT_DATE,"_BIC_Z0CGDDH" AS DATE_V FROM "_SYS_BIC"."DEMO/DEMO_CV_IP" where "_BIC_Z0CGDDH"= 'ZCCG-1403270935500D'; var_out = SELECT A."/BIC/Z0CGDDH" AS CGDDH, A."/BIC/Z0DDZT" AS DDZT, B."/BIC/Z0SL" AS SL, B."/BIC/Z0JE" AS JE FROM "SAPABAP1"."/BIC/AZEZJTO0100" A LEFT JOIN "SAPABAP1"."/BIC/AZEZJTO0200" B ON A."/BIC/Z0CGDDH"=B."/BIC/Z0CGDDH" WHERE B."/BIC/Z0JE" IS NOT NULL AND A."/BIC/Z0CGDDH" IN(:IP_CGDDH) ; END /********* End Procedure Script ************/
权限过滤,有空看看。
) , MD5_CODE ) , OUT AUTH_VALUE ) ) LANGUAGE SQLSCRIPT SQL SECURITY INVOKER --DEFAULT SCHEMA <default_schema_name> READS SQL DATA AS BEGIN /***************************** Write your procedure logic *****************************/ --根据MD5码 得到值列表。 ) ; --7380563cdbb1061c70bc76c19ef6d9a2 DECLARE CURSOR c_cursor FOR select * from "SAPABAP1"."/BIC/OHZBWOHD2" where "USERNAME_MD5" = :MD5_CODE and FILTER_COLOMN = :AUTH_IOBJ ORDER BY "VALUE_LOW" asc ; val:= ''; FOR r1 AS c_cursor DO --val:= :val || '''' || '''' || r1.VALUE_LOW || '''' || '''' || ','; val:= :val || '''' || r1.VALUE_LOW || '''' || ','; IF r1.VALUE_LOW = '*' THEN val:= '''' || '*' || ''''; BREAK ; END IF ; END FOR; -- AUTH_VALUE := :val ; select RTRIM (:val,',') INTO AUTH_VALUE from dummy; --AUTH_VALUE := :val || '''' ; CLOSE c_cursor; END;
这是一个权限判断的存储过程。想必还是有用,也没看懂。
) , ZIP_MD5 ) ,ZIP_IOBJ ) , OUT VAR_OUT ) , OUT VAR_FLAG )) LANGUAGE SQLSCRIPT SQL SECURITY INVOKER --DEFAULT SCHEMA <default_schema_name> READS SQL DATA AS BEGIN /***************************** Write your procedure logic *****************************/ ; ; ; ) ; ); ------------------------------------------------------------------------------------ ;/* Custom Error Code = 10001*/ /*User Defined exception handler */ DECLARE EXIT HANDLER FOR CUSTOMCONDITION RESIGNAL; --SELECT ::SQL_ERROR_CODE AS "Error Code", ::SQL_ERROR_MESSAGE AS "Error Message" FROM DUMMY; /*权限检查段,根据输入的MD5获取权限值*/ ------------------------------------------------------------------------------------ SCONST := '''' || '*' || ''''; VAR_OUT := ''; call "_SYS_BIC"."Purchase::ZAUTH_DYN_FILTER"(:ZIP_IOBJ,:ZIP_MD5,:SVAR); IF :SVAR = '' THEN SIGNAL CUSTOMCONDITION SET MESSAGE_TEXT = '^_^权限不足,请联系管理员增加权限!^_^'; return; END IF; IF :AUTH_IP = '' OR :AUTH_IP = :SCONST THEN VAR_OUT := :SVAR ; ELSE /*对比用户输入和存储过程查到的数据*/ IF :SVAR = :SCONST THEN VAR_OUT := :AUTH_IP; ELSE AUTH_IP := :AUTH_IP || ','; DO ENO := LOCATE(:AUTH_IP , ',',:SNO) ; FLAG := LOCATE(:SVAR , SUBSTRING(:AUTH_IP , :SNO , :ENO-:SNO)) ; THEN SIGNAL CUSTOMCONDITION SET MESSAGE_TEXT = '^_^权限不足,请联系管理员增加权限!^_^'; return; END IF; SNO : ; END WHILE; select RTRIM (:AUTH_IP,',') INTO VAR_OUT from dummy; END IF; END IF ; IF :VAR_OUT = :SCONST THEN VAR_FLAG := '%' ; END IF ; END;
HANA 存储过程的更多相关文章
- 【HANA系列】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...
- 【HANA系列】【第六篇】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第六篇]SAP HANA XS ...
- HANA SQLScript
数据类型 日期时间类型 DATE(日期) DATE 数据类型由年.月.日信息组成,表示一个日期值. DATA 类型的默认格式为‘YYYY-MM-DD’. YYYY 表示年, MM 表示月而 DD 表示 ...
- HANA SQL
约束 注释 你可以给你的 SQL 语句添加注释来增加可读性和可维护性. SQL 语句中注释的分隔如下: l 双连字符“--”.所有在双连字符之后直到行尾的内容都被 SQL 解析器认为是注释. l ...
- SAP HANA 中的决策表(Decision Table)
http://scn.sap.com/community/developer-center/hana/blog/2013/01/11/what-can-you-do-with-decision-tab ...
- SAP HANA procudure 创建用户
SAP HANA中的用户是没有功能进行直接的拷贝的,但是我们可以通过建立存储过程调用,通过sql语句的方式进行拷贝: 存储过程定义如下,各位可根据自己的需求进行修改: CREATE PROCEDURE ...
- 【公众号系列】SAP HANA 平台的优势
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP HANA 平台的优势 ...
- 【公众号系列】超详细SAP HANA JOB全解析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]超详细SAP HANA JOB全解 ...
- 【HANA系列】SAP HANA XS的JavaScript API详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS的Java ...
随机推荐
- 3.5.基于STC89C52+MC20的短信远程控制开关LCD1602显示
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- 面试题2:实现Singleton模式(Java实现)
SIngleton(单例)设计模式 它是最简单的常用的设计模式之一,设计模式在面向对象程序设计中起着举足轻重的作用,Singleton是唯一一个能够用短短几十行代码完整实现的模式. public cl ...
- jQuery EasyUI - 数据表格(DataGrid)
由于工作需要,项目使用前端 jQuery EasyUI - DataGrid 来控制数据表格. 1.加载相关js和css,因为easyui依赖jquery,所有加载easyui前要先加载jquery, ...
- PAT 天梯赛 L1-025. 正整数A+B 【字符串处理】
题目链接 https://www.patest.cn/contests/gplt/L1-025 思路 注意 输入字符串B的时候 要用getline 因为 可能存在空格 然后就把字符串 转化成 数字 并 ...
- Linux下32位与64位数据类型大小
Redhat Enterprise Linux 32 Redhat Enterprise Linux 64
- Shell编程之Linux信号及信号跟踪
一.Linux信号 1.什么是信号? Linux信号是由一个整数构成的异步消息,它可以由某个进程发给其他进程,也可以在用户按下特定键发生某种异常事件时,由系统发给某个进程. 2.信号列表 [root@ ...
- 正则表达式 获取字符串内提取图片URL字符串
#region 获取字符串内提取图片URL字符串 /// <summary> /// 获取字符串内提取图片URL字符串 /// </summary> /// <param ...
- argparse.add_argument()应用
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices] ...
- linux下ipython的安装
第一种:ipython源码安装ipython的源码下载页面为:https://pypi.python.org/pypi/ipython 或者是到git页面下载:https://github.com/i ...
- shell中嵌套执行expect命令实例(利用expect实现自动登录)
expect是 #!/bin/bashpasswd='123456'/usr/bin/expect <<EOFset time 30spawn ssh root@192.168.76.10 ...