仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 801|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网页编程之Oracle 存储历程前往了局集

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:38:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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的基础上。
小女巫 该用户已被删除
沙发
发表于 2015-1-19 20:14:41 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
柔情似水 该用户已被删除
板凳
发表于 2015-1-25 22:31:36 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
莫相离 该用户已被删除
地板
发表于 2015-2-4 08:57:42 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
兰色精灵 该用户已被删除
5#
发表于 2015-2-9 21:02:15 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
若相依 该用户已被删除
6#
发表于 2015-2-27 21:28:53 | 只看该作者
发几份SQL课件,以飨阅者
变相怪杰 该用户已被删除
7#
发表于 2015-3-9 14:20:31 | 只看该作者
需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
蒙在股里 该用户已被删除
8#
发表于 2015-3-16 23:38:20 | 只看该作者
总感觉自己还是不会SQL
乐观 该用户已被删除
9#
发表于 2015-3-23 06:47:05 | 只看该作者
发几份SQL课件,以飨阅者
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 03:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表