知识大全 PL/SQL在from后面使用变量,以及输入&字符的方法
Posted 变量
篇首语:无志山压头,有志人搬山。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PL/SQL在from后面使用变量,以及输入&字符的方法相关的知识,希望对你有一定的参考价值。
PL/SQL在from后面使用变量,以及输入&字符的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在from后面使用变量
CREATE OR REPLACE FUNCTION GET_TABLE_COUNT( I_TabNa IN VARCHAR I_Owner IN VARCHAR DEFAULT NULL ) RETURN NUMBER IS V_RtnVal NUMBER ; V_CursorId INTEGER ; V_SqlStr VARCHAR ( ) ; BEGIN V_CursorId := DBMS_SQL OPEN_CURSOR ;
IF LENGTHB( RTRIM( LTRIM( NVL( I_Owner ) ) ) ) = 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 V ) ;
DBMS_SQL DEFINE_COLUMN( V_CursorId ) ;
IF DBMS_SQL EXECUTE( V_CursorId ) = THEN NULL ; END IF ;
IF DBMS_SQL FETCH_ROWS( V_CursorId ) = THEN RETURN ; END IF ;
DBMS_SQL COLUMN_VALUE( V_CursorId 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 ; END GET_TABLE_COUNT;
试验结果 SQL> select GET_TABLE_COUNT( tab ) from dual ;
GET_TABLE_COUNT( TAB )
SQL> select GET_TABLE_COUNT( spr testman ) from dual ;
GET_TABLE_COUNT( SPR TESTMAN
SQL> select GET_TABLE_COUNT( U_Oausr tm ) from dual ;
GET_TABLE_COUNT( U_OAUSR TM
SQL>
说明 DBMS_SQL DEFINE_COLUMN( V_CursorId ) ; 里的 是什么意思? DEFINE_COLUMN是用作定义数据类型的 不同的数据类型有不太的定义方式 这里面的 通俗点说就是 与 一样的数据类型的意思 比如定义长度为 的varchar 型的列的时候 可以简化为这样定义 DBMS_SQL DEFINE_COLUMN( V_CursorId tmpStr ) 更多的数据类型列的定义请查看oracle的pl/sql文档 里面很全 另外 怎么用联编变量? 联编变量是一种非常好的传递参数的方式 而且不容易出错 但是既然称之为 联编变量 那就是它只能对Oracle中认为的变量进行联编 而刚才上面的例子中 表面是不能够作为变量的 因此不可以联编 Oracle中认为出现在逻辑表达式右边的才是变量 例如可以这样进行联编变量 V_SqlStr := SELECT COUNT(*) FROM TAB WHERE TName LIKE :I_Arg ;
DBMS_SQL PARSE( V_CursorId V_SqlStr DBMS_SQL V ) ; V_TabName := MYTAB ; DBMS_SQL BIND_VARIABLE( V_CursorId :I_Arg V_TabName || % ) ;
i以后的版本这样写也行 CREATE OR REPLACE FUNCTION GET_TABLE_COUNT( I_TabNa IN VARCHAR I_Owner IN VARCHAR DEFAULT NULL ) RETURN NUMBER IS V_RtnVal NUMBER ; V_TabName VARCHAR ( ) ; BEGIN IF LENGTHB( RTRIM( LTRIM( NVL( I_Owner ) ) ) ) = THEN V_TabName := I_TabNa ; ELSE V_TabName := I_Owner|| || I_TabNa ; END IF ;
EXECUTE IMMEDIATE SELECT COUNT(*) FROM || V_TabName INTO V_RtnVal ; RETURN V_RtnVal ;
EXCEPTION WHEN OTHERS THEN RETURN ; END GET_TABLE_COUNT ;
SQL*PLUS环境输入 &字符 的方法
我们知道在SQL*PLUS默认环境里会把 &字符 当成变量来处理
有些时候我们也需要在SQL>的符号下输入 &字符 只需要改变SQL*PLUS下一个环境变量define即可 SQL> set define off;
是把默认的&绑定变量的功能取消 可以把 &字符 当成普通字符处理
SQL> set define on;
打开&绑定变量的功能 &后面的字符串当变量使用
SQL> show define;
查看当前SQL*PLUS的define状态 举例说明: SQL> CREATE TABLE TEST ( ID NUMBER ( ) PRIMARY KEY NAME VARCHAR ( )); SQL> show define; define & (hex ) SQL> insert into test values( sgs&a&n ); Enter value for a: abc Enter value for n: old : insert into test values( sgs&a&n ) new : insert into test values( sgsabc )
row created
SQL> mit;
Commit plete
SQL> set define off;
SQL> insert into test values( sgs&a&n ); row created
SQL> mit;
Commit plete
SQL> select * from test ;
cha138/Article/program/Oracle/201311/16669相关参考
现在你可以通过字符串建立索引提高性能 许多PL/SQL程序对数据进行操作通常是通过使用SQL在数据库中直接操作数据你经常还需要在PL/SQL程序本身内声明和管理数据这个程序数据可能由一些单独的值
ABOUT:字符数组 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很长一段时间内PL/SQL开
Oracle数据库编程:在PL/SQL中使用游标获取数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
PL/SQL开发中动态SQL的使用方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 内容摘要在
数据库PL/SQL异常处理(组图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在设计PL/S
PL/SQL最差实践 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 超长的PL/SQL代码 影
PL/SQL程序结构(组图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 什么是PL/SQL程
从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法 pl/sql 从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法后经
知识大全 在pl/sql中创建oracle的procedure并调用
Createtable createtableA ( USERIDNUMBER() PWD VARCHAR() ) tablespaceUSERS
PL/SQL中用光标查询多条记录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PL/SQL光标