知识大全 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

相关参考

知识大全 oracle附加的字符串

  现在你可以通过字符串建立索引提高性能  许多PL/SQL程序对数据进行操作通常是通过使用SQL在数据库中直接操作数据你经常还需要在PL/SQL程序本身内声明和管理数据这个程序数据可能由一些单独的值

知识大全 ABOUT : 字符数组

ABOUT:字符数组  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很长一段时间内PL/SQL开

知识大全 在PL/SQL中使用游标获取数据

Oracle数据库编程:在PL/SQL中使用游标获取数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 PL/SQL开发中动态SQL的使用方法

PL/SQL开发中动态SQL的使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  内容摘要在

知识大全 数据库PL/SQL异常处理(组图)

数据库PL/SQL异常处理(组图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在设计PL/S

知识大全 PL/SQL最差实践

PL/SQL最差实践  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  超长的PL/SQL代码  影

知识大全 PL/SQL程序结构(组图)

PL/SQL程序结构(组图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  什么是PL/SQL程

知识大全 pl/sql查询字段为科学计数法

  从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法  pl/sql  从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法后经

知识大全 在pl/sql中创建oracle的procedure并调用

  Createtable  createtableA  (  USERIDNUMBER()  PWD   VARCHAR()  )  tablespaceUSERS  

知识大全 PL/SQL中用光标查询多条记录

PL/SQL中用光标查询多条记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PL/SQL光标