怎么查看oralce隐含参数并在SQLPLUS窗口格式化输出
这篇文章主要介绍“怎么查看oralce隐含参数并在SQLPLUS窗口格式化输出”,在日常操作中,相信很多人在怎么查看oralce隐含参数并在SQLPLUS窗口格式化输出问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么查看oralce隐含参数并在SQLPLUS窗口格式化输出”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
/**功能:用于在10g,11g中查询隐含参数的值,主要是可以在SQLPLUS窗口格式化输出注意Cn_Batch_Length的值设置的没必要太大作者:stotf时间:2020/3/28**/CreateOrReplaceFunctionf_Imp_Param(NameInVarchar2)ReturnVarchar2IsVc_TermVarchar2(100);--用于参数替换Vc_ResultLong;--返回查询结果Vc_SqlVarchar2(4000);--定义sqlCur_KkSys_Refcursor;--参考游标Cn_Batch_LengthConstantPls_Integer:=300;--定义最多查询行数v_NumNumber:=0;--行号--定义列头Vc_ParameterVarchar2(100):='PARAMETER';Vc_Session_ValueVarchar2(100):='SESSION_VALUE';Vc_Instance_ValueVarchar2(100):='INSTANCE_VALUE';Vc_Is_Session_ModifiableVarchar2(100):='IS_SESSION_MODIFIABLE';Vc_Is_System_ModifiableVarchar2(100):='IS_SYSTEM_MODIFIABLE';--用于记录列的最大实际长度TypeLength_ColIsRecord(ParaNumber:=Length(Vc_Parameter),SessNumber:=Length(Vc_Session_Value),InstNumber:=Length(Vc_Instance_Value),Is_Sess_ModNumber:=Length(Vc_Is_Session_Modifiable),Is_Sys_ModNumber:=Length(Vc_Is_System_Modifiable));Rec_LengthLength_Col;--定义和查询列匹配的recordTypeRec_ResultIsRecord(ParameterX$ksppi.Ksppinm%Type,Session_ValueX$ksppcv.Ksppstvl%Type,Instance_ValueX$ksppsv.Ksppstvl%Type,Is_Session_ModifiableVarchar2(10),Is_System_ModifiableVarchar2(10));--定义存放结果的tableTypeTab_ResultIsTableOfRec_Result;Typ_TabTab_Result;Begin--处理参数,如果开头没有加下划线,则加上IfSubstr(Name,1,1)='_'ThenVc_Term:='/'||Lower(Name);ElseVc_Term:='/_'||Lower(Name);EndIf;Vc_Sql:='Selecta.Ksppinm"Parameter",b.Ksppstvl"SessionValue",c.Ksppstvl"InstanceValue",Decode(Bitand(a.Ksppiflg/256,1),1,''TRUE'',''FALSE'')Is_Session_Modifiable,Decode(Bitand(a.Ksppiflg/65536,3),1,''IMMEDIATE'',2,''Deferred'',3,''IMMEDIATE'',''FALSE'')Is_System_ModifiableFromX$ksppia,X$ksppcvb,X$ksppsvcWherea.Indx=b.IndxAnda.Indx=c.IndxAnda.KsppinmLike:nameEscape''/''';OpenCur_KkForVc_SqlUsingVc_Term||'%';--循环结果,找出每一列实际值的最大长度FetchCur_KkBulkCollectIntoTyp_TabLimitCn_Batch_Length;ForiIn1..Typ_Tab.CountLoopIfLength(Typ_Tab(i).Parameter)>Rec_Length.ParaThenRec_Length.Para:=Length(Typ_Tab(i).Parameter);EndIf;IfLength(Typ_Tab(i).Session_Value)>Rec_Length.SessThenRec_Length.Sess:=Length(Typ_Tab(i).Session_Value);EndIf;IfLength(Typ_Tab(i).Instance_Value)>Rec_Length.InstThenRec_Length.Inst:=Length(Typ_Tab(i).Instance_Value);EndIf;IfLength(Typ_Tab(i).Is_Session_Modifiable)>Rec_Length.Is_Sess_ModThenRec_Length.Is_Sess_Mod:=Length(Typ_Tab(i).Is_Session_Modifiable);EndIf;IfLength(Typ_Tab(i).Is_System_Modifiable)>Rec_Length.Is_Sys_ModThenRec_Length.Is_Sys_Mod:=Length(Typ_Tab(i).Is_System_Modifiable);EndIf;EndLoop;CloseCur_Kk;Dbms_Output.Put_Line('总记录数:'||Typ_Tab.Count);--输出列头Vc_Result:='NO'||Rpad(Vc_Parameter,Rec_Length.Para+2,'')||Rpad(Vc_Session_Value,Rec_Length.Sess+2,'')||Rpad(Vc_Instance_Value,Rec_Length.Inst+2,'')||Rpad(Vc_Is_Session_Modifiable,Rec_Length.Is_Sess_Mod+2,'')||Rpad(Vc_Is_System_Modifiable,Rec_Length.Is_Sys_Mod+2,''||Chr(10));--输出记录ForiIn1..Typ_Tab.CountLoopv_Num:=v_Num+1;--字符后连接一个空格的字符,防止null值对长度计算的影响Vc_Result:=Vc_Result||Rpad(To_Char(v_Num),6,'')||Rpad(Typ_Tab(i).Parameter||'',Rec_Length.Para+2,'')||Rpad(Typ_Tab(i).Session_Value||'',Rec_Length.Sess+2,'')||Rpad(Typ_Tab(i).Instance_Value||'',Rec_Length.Inst+2,'')||Rpad(Typ_Tab(i).Is_Session_Modifiable||'',Rec_Length.Is_Sess_Mod+2,'')||Rpad(Typ_Tab(i).Is_System_Modifiable||'',Rec_Length.Is_Sys_Mod+2,'')||Chr(10);EndLoop;Dbms_Output.Put_Line(Vc_Result);Return'总记录数:'||v_Num;ExceptionWhenOthersThenReturn'ERROR:'||Sqlcode||Sqlerrm;End;
到此,关于“怎么查看oralce隐含参数并在SQLPLUS窗口格式化输出”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。