概述
下面实例用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_, 1, 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_,1,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;
最后
以上就是勤劳麦片为你收集整理的ORACLE 用sys.dbms_sql执行SQL例的全部内容,希望文章能够帮你解决ORACLE 用sys.dbms_sql执行SQL例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复