今天在PLSQL中写了一个比较复杂的SQL语句,
"SELECT distinct func_node_id , func_node_name ,sub_system_name ,FUNC_NODE_CODE "
+ "FROM (SELECT distinct fn.func_node_id , fn.func_node_name ,fn.sub_system_name , fn.FUNC_NODE_CODE "
+ "FROM bill_func_node fn,bill_func_alloc fa "
+ "WHERE fn.func_node_id=fa.func_node_id "
+ " AND fa.sts='A' "
+ " AND fa.func_set_alloc_id is null "
+ " AND fa.sys_user_id= ? "
+ "UNION ALL "
+ "SELECT fn.func_node_id ,fn.func_node_name ,fn.sub_system_name ,fn.FUNC_NODE_CODE "
+ "FROM SYS_USER_ROLE_BILL sur,bill_func_alloc fa ,bill_func_node fn , sys_role sr "
+ "WHERE sur.sys_role_id = fa.sys_role_id "
+ "AND sur.sys_role_id = sr.sys_role_id "
+ "AND fn.func_node_id=fa.func_node_id "
+ "AND sr.sys_role_name LIKE '%计费%' "
+ "AND sur.sys_user_id = ? "
+ "AND sur.sts='A' ) "
+ "ORDER BY func_node_id ; " ;
成功后,拿到DOA中执行时发生了ORA-00911: invalid character。这是因为在其末尾加上了“;”的缘故,去掉“;”SQL就可以执行了~