活着的死人 发表于 2015-1-16 22:40:04

MSSQL网站制作之一问一答:存储历程典范成绩

mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功存储历程|成绩
只触及到一个表:xkb_treeNode

表布局是如许:
node_idint//节点id
parentNode_idint//父节点id
node_textvarchar//节点内容
isModulebit//是不是叶子节点

如今保留的数占有:

node_idparentNode_idnode_textisModule
1-1言语与文学0
2-1数学0
3-1手艺0
41语文0
51外语0
65英语0
76初中英语0
87特斯塔1
94测定是21
102测试31


如今成绩是:
可否经由过程做一个存储历程,
依据表中的isModule字段的取值(取值为1的暗示终极叶子结点),
好比“特斯塔”为叶子节点,层层向上递进找到”特斯塔“的先人节点:
特斯塔-〉初中英语-〉英语-〉外语-〉言语与文学
即经由过程”特斯塔“找到”言语与文学“来

终极前往的形状为:
叶子节点id父节点id节点称号先人节点称号先人节点id
87特斯塔言语与文学1
94测定是2言语与文学1
102测试3数学2



/////////////////////////////////////////////////////////////////////////
准确谜底:

--天生测试数据
createtablexkb_treeNode(
node_idint,
parentNode_idint,
node_textvarchar(10),
isModulebit)


insertintoxkb_treeNodeselect1,-1,言语与文学,0
insertintoxkb_treeNodeselect2,-1,数学,0
insertintoxkb_treeNodeselect3,-1,手艺,0
insertintoxkb_treeNodeselect4,1,语文,0
insertintoxkb_treeNodeselect5,1,外语,0
insertintoxkb_treeNodeselect6,5,英语,0
insertintoxkb_treeNodeselect7,6,初中英语,0
insertintoxkb_treeNodeselect8,7,特斯塔,1
insertintoxkb_treeNodeselect9,4,测定是2,1
insertintoxkb_treeNodeselect10,2,测试3,1


--创立存储历程
createproceduresp_test
as
begin
select
a.node_id,
a.parentNode_id,
a.node_text,
b.node_idasancestor_id,
b.node_textasancestor_text
into
#t
from
xkb_treeNodea,xkb_treeNodeb
where
a.parentNode_id=b.node_idanda.isModule=1

while(exists(select1fromxkb_treeNodea,#tbwherea.node_id=ancestor_idanda.parentNode_id!=-1))
begin
update#t
set
ancestor_id=b.p_id,
ancestor_text=b.p_text
from
#ta,
(select
c.node_id,
d.node_idasp_id,
d.node_textasp_text
from
xkb_treeNodec,xkb_treeNoded
where
c.parentNode_id=d.node_id)b
where
a.ancestor_id=b.node_id
end

select*from#torderbynode_id
end


--实行存储历程,了局楼主本人看
execsp_test

对于update操作,event中依次记录旧行,新行的值。

冷月葬花魂 发表于 2015-1-19 21:06:51

总感觉自己还是不会SQL

透明 发表于 2015-1-28 10:35:53

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

因胸联盟 发表于 2015-2-5 15:04:18

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。

不帅 发表于 2015-2-12 09:56:39

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

谁可相欹 发表于 2015-3-3 02:24:19

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。

愤怒的大鸟 发表于 2015-3-18 00:58:19

不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?

老尸 发表于 2015-3-25 09:18:31

比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
页: [1]
查看完整版本: MSSQL网站制作之一问一答:存储历程典范成绩