PLSQL在from后面使用变量

PLSQL在from后面使用变量

ID:40564986

大小:37.50 KB

页数:4页

时间:2019-08-04

PLSQL在from后面使用变量_第1页
PLSQL在from后面使用变量_第2页
PLSQL在from后面使用变量_第3页
PLSQL在from后面使用变量_第4页
资源描述:

《PLSQL在from后面使用变量》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、PL/SQL在from后面使用变量,以及输入'&字符'的方法在from后面使用变量CREATEORREPLACEFUNCTIONGET_TABLE_COUNT(I_TabNaINVARCHAR2,I_OwnerINVARCHAR2DEFAULTNULL)RETURNNUMBERISV_RtnValNUMBER;V_CursorIdINTEGER;V_SqlStrVARCHAR2(300);BEGINV_CursorId:=DBMS_SQL.OPEN_CURSOR;IFLENGTHB(RTRIM(LTRIM(NV

2、L(I_Owner,''))))=0THENV_SqlStr:='SELECTCOUNT(*)FROM'

3、

4、I_TabNa;ELSEV_SqlStr:='SELECTCOUNT(*)FROM'

5、

6、I_Owner

7、

8、'.'

9、

10、I_TabNa;ENDIF;DBMS_SQL.PARSE(V_CursorId,V_SqlStr,DBMS_SQL.V7);DBMS_SQL.DEFINE_COLUMN(V_CursorId,1,0);IFDBMS_SQL.EXECUTE(V_CursorId)=0THENNULL;ENDI

11、F;IFDBMS_SQL.FETCH_ROWS(V_CursorId)=0THENRETURN0;ENDIF;DBMS_SQL.COLUMN_VALUE(V_CursorId,1,V_RtnVal);DBMS_SQL.CLOSE_CURSOR(V_CursorId);RETURNV_RtnVal;EXCEPTIONWHENOTHERSTHENDBMS_SQL.CLOSE_CURSOR(V_CursorId);--DBMS_OUTPUT.PUT_LINE(V_SqlStr

12、

13、SQLERRM);RETURN0;EN

14、DGET_TABLE_COUNT;试验结果:SQL>selectGET_TABLE_COUNT('tab')fromdual;GET_TABLE_COUNT('TAB')----------------------22SQL>selectGET_TABLE_COUNT('spr','testman')fromdual;GET_TABLE_COUNT('SPR','TESTMAN------------------------------15SQL>selectGET_TABLE_COUNT('U_Oausr',

15、'tm')fromdual;GET_TABLE_COUNT('U_OAUSR','TM'------------------------------10SQL>说明:--DBMS_SQL.DEFINE_COLUMN(V_CursorId,1,0);里的“0”是什么意思?DEFINE_COLUMN是用作定义数据类型的,不同的数据类型有不太的定义方式,这里面的“0”通俗点说就是“与‘0’一样的数据类型的意思”,比如定义长度为200的varchar2型的列的时候,可以简化为这样定义:DBMS_SQL.DEFINE_C

16、OLUMN(V_CursorId,1,'tmpStr',200),更多的数据类型列的定义请查看oracle的pl/sql文档,里面很全。--另外,怎么用联编变量?联编变量是一种非常好的传递参数的方式,而且不容易出错。但是既然称之为“联编变量”那就是它只能对Oracle中认为的变量进行联编,而刚才上面的例子中,表面是不能够作为变量的,因此不可以联编,Oracle中认为出现在逻辑表达式右边的才是变量,例如可以这样进行联编变量:......V_SqlStr:='SELECTCOUNT(*)FROMTABWHERETN

17、ameLIKE:I_Arg0';DBMS_SQL.PARSE(V_CursorId,V_SqlStr,DBMS_SQL.V7);V_TabName:='MYTAB';DBMS_SQL.BIND_VARIABLE(V_CursorId,':I_Arg0',V_TabName

18、

19、'%');......8i以后的版本这样写也行CREATEORREPLACEFUNCTIONGET_TABLE_COUNT(I_TabNaINVARCHAR2,I_OwnerINVARCHAR2DEFAULTNULL)RETURNNUMBE

20、RISV_RtnValNUMBER;V_TabNameVARCHAR2(300);BEGINIFLENGTHB(RTRIM(LTRIM(NVL(I_Owner,''))))=0THENV_TabName:=I_TabNa;ELSEV_TabName:=I_Owner

21、

22、'.'

23、

24、I_TabNa;ENDIF;EXECUTEIMMEDIATE'SELECTCOUNT(*)FROM'

25、

26、V_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。