我要写一个存储过程遇到了困难,特此请各位给出一些提示或建议,多谢!下面罗列出相关过程要求!
1.我想把前台页面拼写好的一句SQL语句,传给我所写的存储过程来执行,比方说前台传来一个SQL语句为:“select a a from emp ;”我如何在存储过程中验证该句SQL的语法正确性,是否有oracle现成的函数可以调用?
2.又例如前台传入一个SQL语句:“select * from emp;”我要判断这个语句中是否有 * 存在 是不是用 IN 来检查?
3.如何来取得传入的SQL语句的Cost ? 这里的Cost我还不是很了解其作用!
4.以上功能实现后,运行这家查询语句将得到相应的结果集,这里要求将结果集插入到临时表中去,这里我想知道临时表如何建成,如果插入的过程。需要注意什么?
5.当结果集中的数据存入相应的临时表中,又该如何返回到页面中去。?
6.如和在存储过程当中调用什么函数来查看相应的会话信息?或者用户登录信息,?
7.如和将写日志信息,请给出简短的例子,谢谢!以上问题,可能本身我提的问题不够明确,或者提问的问题不对,还请见谅!请各位朋友多给意见和相应的代码提示!谢谢!

解决方案 »

  1.   

    1:没有提供语法解析函数,要自己写个语法解析的功能函数
    2:用INSTR函数
    3:COST的指执行该语句所消耗的资源(时间,CPU,....),现在大多考虑的是时间,可以通过执行计划获取
    4:事务临时表和SESSION临时表,
    SESSION临时表:Create Global Temporary Table Table_Name
    (Col1 Type1,Col2 Type2...) On Commit Preserve Rows;
    事务临时表:Create Global Temporary Table Table_Name
    (Col1 Type1,Col2 Type2...) On Commit Delete Rows;
    5:前台的事情
    6:查看当前连接的用户:select distinct username from v$session where status='ACTIVE'
    7:表述不清....是用户操作日志?还的....
      

  2.   

    Alibert
     
    等 级: 
    结帖率:115.79% 楼上的结贴率太NB了,还的CSDN太才了?
      

  3.   

    直接让ORACLE去检查语法,然后用异常机制去捕捉就行了,
    如果自己写,难道比ORACLE更全面?