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 ...
随机推荐
- 剑指offer 面试58题
面试58题: 题目:翻转字符串 题:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意 ...
- 随心所欲移动Panel
C# Winform编程时,有时需要在程序执行时,使窗体中的panel控件可以随意的移动,这时可以采用下面这种方法: 主要包括以下两步: @1:给panel(此处以 RealGLPanel为例说明)添 ...
- LDAP注入
理解LDAP与LDAP注入 0x01 LDAP简介 查阅了一些网上的资料,读了好久还是觉得理解起来很困难,感觉还是不够干,之后看到的一个博客http://www.chinaunix.net/old_j ...
- spring RMI的使用
Spring整合RMI的原理 客户端的核心是RmiProxyFactoryBean,包含serviceURL属性和serviceInterface属性. 通过JRMP访问服务.JRMP JRMP:ja ...
- 对象数组空指针异常说明——C#中使用对象数组必须分别为其开辟空间
l 场景 定义一个学生类,包含字段(学号,姓名,语文成绩,数学成绩,英语成绩).属性(总成绩).三个方法分别为(求平均分.数学平均分.语文平均分). 要求:在main()方法中,定义一个学生类型的数 ...
- nodejs模块Phantom,无界面浏览器
PhantomJS 是一个无界面的 webkit 内核浏览器,
- curl扩展代码
/** * * curl 支持post * @param string $base_url 基础链接 * @param array $query_data 需要请求的数据 * @param strin ...
- samtools+bcftools 进行SNP calling
两个软件的作用:1.samtools mpileup 主要是用于收集BAM文件中的信息,这个位点上有多少条read匹配,匹配read的碱基是什么,并将这些信息存储在BCF文件中.2.bcftools ...
- iOS_AutoLayout自动布局
目录: 一.什么是AutoLayout? 二.创建autoLayout的方法 三.VFL语言 一.什么是AutoLayout? Autolayout是一种“自动布局”技术,专门用来布局UI界面 ...
- Go 功能测试与性能测试
1.功能测试 calcTriangle.go // 需要被测试的函数 func calcTriangle(a, b int) int { return int(math.Sqrt(float64(a* ...