碰到需要验证SQL的合法性的情况(界面输入一段SQL,提供一个验证按钮),可以使用以下代码:
点击(此处)折叠或打开
-
FUNCTION sql_validate(where_clause IN VARCHAR2) RETURN VARCHAR2 IS
-
v_cursor INTEGER;
- v_sql VARCHAR2(2000);
-
BEGIN
-
v_sql := 'SELECT COUNT(1) TEST ';
-
v_sql := v_sql || where_clause;
-
BEGIN
-
v_cursor := dbms_sql.open_cursor;
-
dbms_sql.parse(v_cursor, v_sql, 1);
-
dbms_sql.close_cursor(v_cursor);
-
EXCEPTION
-
WHEN OTHERS THEN
-
IF dbms_sql.is_open(v_cursor) THEN
-
dbms_sql.close_cursor(v_cursor);
-
END IF;
-
RETURN 'INVALID';
-
END;
-
RETURN 'VALID';
- END;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29599494/viewspace-2106788/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29599494/viewspace-2106788/