加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 varchar2
is
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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读