ORACLE 用sys.dbms_sql执行SQL例
发布时间:2020-12-12 14:45:33 所属栏目:百科 来源:网络整理
导读:下面实例用sys.dbms_sql执行SQL例,可以选择SELECT 返回值也可选择FUNCTION调用返回值,具体运用要视实际情况做修改。 function GetSqlResult( data_sql_ in varchar2) return varchar2 is sDataSql varchar2(2000); sReturn varchar2(200); cid_ number; ro
下面实例用sys.dbms_sql执行SQL例,可以选择SELECT 返回值也可选择FUNCTION调用返回值,具体运用要视实际情况做修改。 function GetSqlResult( data_sql_ in varchar2) return varchar2is sDataSql varchar2(2000); sReturn varchar2(200); cid_ number; rows_ number; stmt_ varchar2(2000); begin sDataSql := data_sql_; if instr(sDataSql,'[SELECT]') > 0 then --调用SELECT 返回 sDataSql := replace(sDataSql,'[SELECT]','');cid_ := dbms_sql.open_cursor; dbms_sql.parse(cid_,sDataSql,dbms_sql.native); sys.dbms_sql.define_column(cid_,1,sReturn,200); rows_ := sys.dbms_sql.execute(cid_); if (dbms_sql.fetch_rows(cid_) > 0) then sys.dbms_sql.column_value(cid_,sReturn); end if; sys.dbms_sql.close_cursor(cid_); elsif instr(sDataSql,'[FUN]') > 0 then --调用function返回值 sDataSql := replace(sDataSql,'[FUN]',''); if instr(upper(sDataSql),'BEGIN ') <= 0 and instr(sDataSql,';') <= 0 then sDataSql := 'BEGIN '||sDataSql|| '; END;'; elsif instr(upper(sDataSql),'BEGIN ') <= 0 then sDataSql := 'BEGIN '||sDataSql|| ' END;'; end if; execute immediate sDataSql using out sReturn; else sReturn := substrb(data_sql_,100); end if; return sReturn; exception when others then if dbms_sql.is_open(cid_) then dbms_sql.close_cursor(cid_); end if; return 'ERROR'; end GetSqlResult;(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |