09月22日, 2014 153次
正文重要引见“怎样察看oralce的湮没参数并在SQLPLUS窗口中表露”。在凡是操纵中,断定很多人对于怎样察看oralce的湮没参数以及SQLPLUS窗口的打字与印刷方法都有疑义。边肖查看了百般材料,整治出大略易用的操纵本领,蓄意能扶助大师回答“怎样察看oralce的湮没参数并在SQLPLUS窗口表露”的迷惑!接下来,请和边肖一道进修!
功效:用来查问10g和11g中隐式参数的值,重要经过SQLPLUS窗口中的打字与印刷方法举行查问。
请提防,Cn_Batch_Length的值不确定树立得太大。
作家:stotf
功夫:2020年3月28日。
createorreplaceffective f _ Imp _ Param(name invar char 2)returnvarchar 2 is
VC _ termvarchar 2(100);-用来参数替代。
Vc _ ResultLong-归来查问截止。
VC _ sqlvarchar 2(4000);-设置sql。
Cur _ KkSys _ Refcursor-参考光标。
cn _ Batch _ length constantpls _ integer :=300;-设置查问行数的最大值。
v _ NumNumber :=0;-行号
-设置列题目。
VC _ ParameterVarchar 2(100):= PARAMETER ;
VC _ Session _ VaLueVarChar 2(100):= Session _ VaLue ;
VC _ INSTANCE _ VaLueVarChar 2(100):= INSTANCE _ VaLue ;
VC _ Is _ Session _ modifielablevarchar 2(100):= Is _ Session _ modified ;
VC _ IS _ SYStem _ modifielablevarchar 2(100):= IS _ SYStem _ modified ;
-记载列的最大本质长度。
TypeLength_ColIsRecord(
ParaNumber:=长度(Vc_Parameter),
对话号:=长度(Vc_Session_Value),
InstNumber:=长度(Vc_Instance_Value),
Is _ Sess _ ModNumber:=长度(Vc _ Is _ Session _可窜改),
Is _ Sys _ ModNumber:=长度(Vc _ Is _ System _ modified));
Rec _ LengthLength _ Col
-设置与查问列配合的记载。
TypeRec_ResultIsRecord(
Parameter X$ksppi.Ksppinm%Type,
Session_Value X$ksppcv.Ksppstvl%Type,
Instance_Value X$ksppsv.Ksppstvl%Type,
Is_Session_Modifiable Varchar2(10),
Is_System_Modifiable Varchar2(10));
设置寄存截止的table
Type Tab_Result Is Table Of Rec_Result;
Typ_Tab Tab_Result;
Begin
处置参数,即使发端没有加下划线,则加上
If Substr(Name, 1, 1) = _ Then
Vc_Term := / || Lower(Name);
Else
Vc_Term := /_ || Lower(Name);
End If;
Vc_Sql := Select a.Ksppinm Parameter ,
b.Ksppstvl Session Value ,
c.Ksppstvl Instance Value ,
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_Modifiable
From X$ksppi a, X$ksppcv b, X$ksppsv c
Where a.Indx = b.Indx
And a.Indx = c.Indx
And a.Ksppinm Like :name Escape /
Open Cur_Kk For Vc_Sql
Using Vc_Term || %
轮回截止,找到每一列本质值的最大长度
Fetch Cur_Kk Bulk Collect
Into Typ_Tab Limit Cn_Batch_Length;
For i In 1 .. Typ_Tab.Count Loop
If Length(Typ_Tab(i).Parameter) Rec_Length.Para Then
Rec_Length.Para := Length(Typ_Tab(i).Parameter);
End If;
If Length(Typ_Tab(i).Session_Value) Rec_Length.Sess Then
Rec_Length.Sess := Length(Typ_Tab(i).Session_Value);
End If;
If Length(Typ_Tab(i).Instance_Value) Rec_Length.Inst Then
Rec_Length.Inst := Length(Typ_Tab(i).Instance_Value);
End If;
If Length(Typ_Tab(i).Is_Session_Modifiable) Rec_Length.Is_Sess_Mod Then
Rec_Length.Is_Sess_Mod := Length(Typ_Tab(i).Is_Session_Modifiable);
End If;
If Length(Typ_Tab(i).Is_System_Modifiable) Rec_Length.Is_Sys_Mod Then
Rec_Length.Is_Sys_Mod := Length(Typ_Tab(i).Is_System_Modifiable);
End If;
End Loop;
Close Cur_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));
输入记载
For i In 1 .. Typ_Tab.Count Loop
v_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);
End Loop;
Dbms_Output.Put_Line(Vc_Result);
Return 总记载数: || v_Num;
Exception
When Others Then
Return ERROR: || Sqlcode || Sqlerrm;
End;
到此,对于“如何察看oralce隐含参数并在SQLPLUS窗口方法化输入”的进修就中断了,蓄意不妨处置大师的迷惑。表面与试验的搭配能更好的扶助大师进修,快去试试吧!若想连接进修更多关系常识,请连接关心网站,小编会连接全力为大师带来更多适用的作品!