防sql注入的oracle函数
2018-02-01 11:58
351 查看
CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN str_split
PIPELINED
AS
str1 varchar2(4000) := replace(p_string,'''',''); -- 去掉单引号
v_length NUMBER := LENGTH(str1);
v_start NUMBER := 1;
v_index NUMBER;
BEGIN
WHILE(v_start <= v_length)
LOOP
v_index := INSTR(str1, p_delimiter, v_start);
IF v_index = 0
THEN
PIPE ROW(SUBSTR(str1, v_start));
v_start := v_length + 1;
ELSE
PIPE ROW(SUBSTR(str1, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP;
RETURN;
END splitstr;
-- 测试
select 字段 from 表名 where 字段 in (
select a.column_value fid from (select * from (select * from table(splitstr('++4uu0vtQFyNPvT+pYq5kiOVzh4=,++dn+T66RsuI85VIAGfkcyOVzh4=',',')) t)) a
)
CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN str_split
PIPELINED
AS
str1 varchar2(4000) := replace(p_string,'''',''); -- 去掉单引号
v_length NUMBER := LENGTH(str1);
v_start NUMBER := 1;
v_index NUMBER;
BEGIN
WHILE(v_start <= v_length)
LOOP
v_index := INSTR(str1, p_delimiter, v_start);
IF v_index = 0
THEN
PIPE ROW(SUBSTR(str1, v_start));
v_start := v_length + 1;
ELSE
PIPE ROW(SUBSTR(str1, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP;
RETURN;
END splitstr;
-- 测试
select 字段 from 表名 where 字段 in (
select a.column_value fid from (select * from (select * from table(splitstr('++4uu0vtQFyNPvT+pYq5kiOVzh4=,++dn+T66RsuI85VIAGfkcyOVzh4=',',')) t)) a
)
相关文章推荐
- 编写通用的ASP防SQL注入攻击程序
- asp中一段防SQL注入的通用脚本
- jsp的防sql注入通用程序
- ASP.net简单的防SQL注入代码
- 利用HttpModule实现防sql注入
- 如何编写通用的ASP防SQL注入攻击程序
- 浅谈SQL注入和防SQL注入方法
- .NET防SQL注入方法 适用于存储过程
- asp.net防sql注入语句
- 防SQL注入方式.net
- 防SQL注入
- ROLLUP, CUBE, RANK, START WITH 等ORACLE函数
- 行为扩展以及防sql注入
- 常用oracle函数
- 防SQL注入
- 不经意间遇到的oracle函数
- PHP代码实现防sql注入
- 防sql注入解决方法
- 在Global.asax文件里实现通用防SQL注入漏洞程序
- java 过滤器filter防sql注入的实现代码