欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap FreeTalk
   您现在位于: 首页技术专栏数据库 → 正文
PL/SQL在from后面使用变量,以及输入'&字符'的方法
08-06-20 08:11:22 作者:半块点心 出处:本站原创
在from后面使用变量
CREATE OR REPLACE FUNCTION GET_TABLE_COUNT(
I_TabNa IN VARCHAR2 ,
I_Owner IN VARCHAR2 DEFAULT NULL
)
RETURN NUMBER
IS
V_RtnVal NUMBER ;
V_CursorId INTEGER ;
V_SqlStr VARCHAR2(300) ;
BEGIN
V_CursorId := DBMS_SQL.OPEN_CURSOR ;
IF LENGTHB( RTRIM( LTRIM( NVL( I_Owner , '' ) ) ) ) = 0 THEN
V_SqlStr := 'SELECT COUNT(*) FROM ' || I_TabNa ;
ELSE
V_SqlStr := 'SELECT COUNT(*) FROM ' || I_Owner|| '.' || I_TabNa ;
END IF ;
DBMS_SQL.PARSE( V_CursorId , V_SqlStr , DBMS_SQL.V7 ) ;
DBMS_SQL.DEFINE_COLUMN( V_CursorId , 1 , 0 ) ;
IF DBMS_SQL.EXECUTE( V_CursorId ) = 0 THEN
NULL ;
END IF ;
IF DBMS_SQL.FETCH_ROWS( V_CursorId ) = 0 THEN
RETURN 0 ;
END IF ;
DBMS_SQL.COLUMN_VALUE( V_CursorId , 1 , V_RtnVal ) ;
DBMS_SQL.CLOSE_CURSOR( V_CursorId ) ;
RETURN V_RtnVal ;
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR( V_CursorId ) ;
-- DBMS_OUTPUT.PUT_LINE( V_SqlStr || SQLERRM ) ;
RETURN 0 ;
END GET_TABLE_COUNT;

试验结果:
SQL> select GET_TABLE_COUNT( 'tab' ) from dual ;
GET_TABLE_COUNT('TAB')
----------------------
22
SQL> select GET_TABLE_COUNT( 'spr' , 'testman') from dual ;
GET_TABLE_COUNT('SPR','TESTMAN
------------------------------
15
SQL> select GET_TABLE_COUNT( 'U_Oausr' , 'tm') from dual ;
GET_TABLE_COUNT('U_OAUSR','TM'
------------------------------
10
SQL>
说明:
-- DBMS_SQL.DEFINE_COLUMN( V_CursorId , 1 , 0 ) ; 里的“0”是什么意思?
DEFINE_COLUMN是用作定义数据类型的,不同的数据类型有不太的定义方式,这里面的“0”通俗点说就是“与‘0’一样的数据类型的意思”,比如定义长度为200的varchar2型的列的时候,可以简化为这样定义:DBMS_SQL.DEFINE_COLUMN( V_CursorId , 1 , 'tmpStr' , 200 ),更多的数据类型列的定义请查看oracle的pl/sql文档,里面很全。
-- 另外,怎么用联编变量?
联编变量是一种非常好的传递参数的方式,而且不容易出错。但是既然称之为“联编变量”那就是它只能对Oracle中认为的变量进行联编,而刚才上面的例子中,表面
9 7 3 1 2 3 4 4 8 :

(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  
    PL/SQL单行函数和组函数详解
    动态SQL和PL/SQL的EXECUTE IMMEDIATE选项
    pl/sql语法_cursor
    pl/sql 编程笔记

    关于我们友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
     
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.
     

                   滇ICP备05006901号