|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
RDBMS并非没有局限性。它们难以扩展,需要大量的资源来配置和维护,比如时间、硬件和人力。同样,它们往往遵循峰值性能模型,这就要求系统按照峰值容量来配置可用性,而不考虑典型的数据使用情况。oracle|存储历程
1.前往数组(作者:enhydraboy(乱舞的浮尘))
在oracle背景创立一个程序包大概存储历程
connectscott/tiger;
CREATEORREPLACEPACKAGEado_callpkgAS
TYPEeidISTABLEofNUMBER(4)INDEXBYBINARY_INTEGER;
TYPEenameISTABLEofVARCHAR2(40)INDEXBYBINARY_INTEGER;
PROCEDUREgetEmpNames(empidOUTeid,empnameOUTename);
endado_callpkg;
CREATEORREPLACEPACKAGEBODYado_callpkgAS
PROCEDUREgetEmpNames(empidOUTeid,empnameOUTename)IS
CURSORc1ISselectemployee_id,first_name||,||Middle_Initial||,||last_nameasnamefromemployee;
cntNUMBERDEFAULT1;
cc1%ROWTYPE;
BEGIN
openc1;
LOOP
FETCHc1INTOc;
empname(cnt):=c.name;
empid(cnt):=c.employee_id;
EXITWHENc1%NOTFOUND;--processthedata
cnt:=cnt+1;
ENDLOOP;
closec1;
END;
endado_callpkg;
2前台vb程序挪用
DimcnAsNewADODB.Connection
DimrsAsNewADODB.Recordset
DimcmdAsNewADODB.Command
DimstrAsString
str="{callado_callpkg.getEmpNames({resultset100,empid,empname})}"
cn.Open"Provider=MSDAORA.1;Password=tiger;UserID=scott;DataSource=ORACLE;PersistSecurityInfo=True"
Withcmd
.CommandText=str
.ActiveConnection=cn
.CommandType=adCmdText
EndWith
rs.CursorLocation=adUseClient
rs.Opencmd
DoWhileNotrs.EOF
Debug.Printrs.Fields(0).Value&vbTab&rs.Fields(1).Value
rs.MoveNext
Loop
------------
总结
1oracle的背景存储历程,应当经由过程一个相似数组而且带无数字索引的变量前往,有几个列,就有对应几个变量
2前台,挪用的sql语句写法要注重,
{call<package_name>.<prodecurename>(<input1>,<input2>,....<inputn>,{resultset<number>,<output1>,<output2>,...<outputn>})}
注重的细节,
(1)<number>要本人指定一个数字,暗示承受的行数巨细,假如太小,而实践前往的纪录年夜于这个数字,会堕落
(2)假如有输出参数,应当在command中创立输出参数,对应的中央用?替换,如
{callado_callpkg.getEmpNames(?,{resultset100,empid,empname})}
(3)output和你存储函数的界说分歧,参数名要一样,序次也一样,不然也会堕落。
到2009年,甲骨文的数据库Oracle已经诞生了30周年,而MySQL却连它的一半时间都没有。微软的SQLServer仅仅比MySQL大两年,但是SQLServer的发布是建立在Sybase的基础上。 |
|