变相怪杰 发表于 2015-1-16 22:22:38

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

因此我们的保存数据方法就是:在删除的动作开始之前,把表数据备份起来,然后留一个空表,在空表上执行“删除”操作。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事务,支持行级锁定

活着的死人 发表于 2015-1-19 09:44:56

这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。

透明 发表于 2015-1-27 12:00:24

如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。

再见西城 发表于 2015-2-5 09:25:12

如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。

谁可相欹 发表于 2015-2-11 08:30:33

再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。

飘灵儿 发表于 2015-3-2 04:47:19

财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

爱飞 发表于 2015-3-11 02:41:05

总感觉自己还是不会SQL

乐观 发表于 2015-3-24 21:29:02

换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
页: [1]
查看完整版本: MSSQL网页编程之SQL Server中自界说函数和游标使用的经...