仓酷云

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

[学习教程] MSSQL网页编程之SQL Server中自界说函数和游标使用的经...

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
#
发表于 2015-1-16 22:22:38 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
因此我们的保存数据方法就是:在删除的动作开始之前,把表数据备份起来,然后留一个空表,在空表上执行“删除”操作。server|函数|游标这是网友的成绩,我事先立马给出了本人的办理计划,可是没有想到两头有点小成绩,发明后经由本人细心调试,完整失掉准确了局后,谁人网友已结帖了。我的代码遂成为鸡肋,食之有趣,弃之惋惜。可是我以为我的代码的确仍是挺典范的,以是收拾了一下,供列位网友浏览。
成绩:

假定情况以下:
表1:ID,NAME,QQ,PHONE,
表中数据:1秦云1010280013500000
2在路上1037813600000
3LEO1000013900000

表2:ID,NAME,上机工夫,办理员,
表中数据:1秦云2004-1-1李年夜伟
2秦云2005-1-1马化腾
3在路上2005-1-1马化腾
4秦云2005-1-1李年夜伟
5在路上2005-1-1李年夜伟

完成目标:从表1中取一切职员列表,从表2中取上机次数和办理员.
上机职员名单上机次数办理员(上这几回机的每一个办理员都列出来)
秦云3李年夜伟,马化腾,李年夜伟
在路上2马化腾,李年夜伟
LEO0
假如不算办理员那一列的话,我是如许写的。
SELECT表1.NAMEAS姓名,COUNT(表2.ID)AS上机次数
FROM表1LEFTOUTERJOIN
表2ON表1.NAME=表2.NAME
GROUPBY表1.称号

解答:
测试用例


createtable表1(--droptable表1
IDint,
NAMEvarchar(10),
QQvarchar(10),
PHONEvarchar(20)
)

insertinto表1values(1,’秦云’,’10102800’,’13500000’)
insertinto表1values(2,’在路上’,’10378’,’13600000’)
insertinto表1values(3,’LEO’,’10000’,’13900000’)

createtable表2(--droptable表2
IDint,
NAMEvarchar(10),
上机工夫datetime,
办理员varchar(10)
)

insertinto表2values(1,’秦云’,cast(’2004-1-1’asdatetime),’李年夜伟’)
insertinto表2values(2,’秦云’,cast(’2005-1-1’asdatetime),’马化腾’)
insertinto表2values(3,’在路上’,cast(’2005-1-1’asdatetime),’马化腾’)
insertinto表2values(4,’秦云’,cast(’2005-1-1’asdatetime),’李年夜伟’)
insertinto表2values(5,’在路上’,cast(’2005-1-1’asdatetime),’李年夜伟’)

程序部分

createfunctionGetNameStr(@namenvarchar(10))
returnsnvarchar(800)
as
begin
declare@nameStrnvarchar(800)
declare@tempStrnvarchar(800)
declare@flagint
declaremyCurcursorfor(select办理员from表2where表2.NAME=@name)
openmyCur
fetchnextfrommyCurinto@tempStr
set@flag=0
while@@fetch_status=0
begin
if@flag=0
begin
set@nameStr=@tempStr
end
else
begin
set@nameStr=@nameStr+’,’+@tempStr
end
set@flag=@flag+1
fetchnextfrommyCurinto@tempStr
end
closemyCur
deallocatemyCur
return@nameStr
end

select表2.NAMEas姓名,count(ID)as上机次数,dbo.GetNameStr(表2.NAME)as办理员
from表2
where表2.NAMEin(select表1.NAMEfrom表1)
groupby表2.NAME


测试了局:

姓名上机次数办理员
--------------------------------------------------------------
秦云3李年夜伟,马化腾,李年夜伟
在路上2马化腾,李年夜伟


InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定
乐观 该用户已被删除
7#
发表于 2015-3-24 21:29:02 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
爱飞 该用户已被删除
6#
发表于 2015-3-11 02:41:05 | 只看该作者
总感觉自己还是不会SQL
飘灵儿 该用户已被删除
5#
发表于 2015-3-2 04:47:19 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
谁可相欹 该用户已被删除
地板
发表于 2015-2-11 08:30:33 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
再见西城 该用户已被删除
板凳
发表于 2015-2-5 09:25:12 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
透明 该用户已被删除
沙发
发表于 2015-1-27 12:00:24 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
活着的死人 该用户已被删除
楼主
发表于 2015-1-19 09:44:56 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 00:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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