碰到需要验证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/