仓酷云

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

[学习教程] MSSQL网站制作之ERP基本档案办理模块中完成多级分类档案...

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

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

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

x
对于insert操作,只需要把event_type改成DELETE_ROWS_EVENT;对于delete操作,改成WRITE_ROWS_EVENTerp|编码


ERP基本档案办理模块中完成多级分类档案ID号主动编码手艺(V1.0)



本存储历程完成了多级分类档案ID号主动编码手艺,本版本(V1.0)如今只完成每级3位的编码,

本版本的特性是:

n能够依据分歧的数据库表发生分歧的编码,到达通用化

n挪用时经由过程指定iIsSubNode要发生的节点编码是不是是子结点仍是兄弟节点来天生对应编码

举行挪用本存储历程时必要注重的是必要传送节点的条理(或是叫节点的深度)

别的下一个版本(V2.0)将依据用户自界说每级长度来完成更天真的主动编码手艺。



CREATEprocedureprcIDAutoGen

@vSourceIDvarchar(30),

@iDepthint,

@iIsSubNodeint,

@Tablevarchar(20),

@vIncrementvarchar(30)output

as

begin

declare@iLenint

declare@vTempIDvarchar(30)

declare@SQLStringnvarchar(500)

if@iIsSubNode=1

begin

set@iDepth=@iDepth+1

set@iLen=@iDepth*3

set@SQLString=NselectvIDfrom+@Table+wherevID=+ltrim(rtrim(@vSourceID))+

exec(@SQLString)

if@@rowcount>0

begin

select@vSourceIDasvIDinto#t

set@SQLString=Ninsert#tselectvIDfrom+@Table+wherevParentIDin(selectvIDfrom#t)andvIDnotin(selectvIDfrom#t)andiDepth=@iDepth

execsp_executesql@SQLString,N@iDepthint,@iDepth

if@@rowcount>0

begin

set@SQLString=Nselect@vTempID=isnull(max(vID),0)from#t

execsp_executesql@SQLString,N@vTempIDvarchar(30)output,@vTempIDoutput

set@SQLString=select@vIncrement=right(000+cast((cast(substring(@vTempID,1,@iLen)asdecimal(30,0))+1)asvarchar),@iLen)

execsp_executesql@SQLString,N@vIncrementvarchar(30)output,@vTempIDvarchar(30),@iLenint,@vIncrementout,@vTempID,@iLen

end

else

begin

select@vIncrement=ltrim(rtrim(@vSourceID))+001

end

end

else

begin

select@vIncrement=001

end

end

else

begin

set@iLen=len(ltrim(rtrim(@vSourceID)))

set@SQLString=NselectvIDfrom+@Table+wherevID=+ltrim(rtrim(@vSourceID))+

exec(@SQLString)

if@@rowcount>0

begin

set@SQLString=Nselect@vTempID=isnull(max(vID),0)from+@Table+wherevIDin(selectvIDfrom+@Table+whereiDepth=@iDepth)

execsp_executesql@SQLString,N@vTempIDvarchar(30)output,@iDepthint,@vTempIDoutput,@iDepth

set@SQLString=select@vIncrement=right(000+cast((cast(substring(@vTempID,1,@iLen)asdecimal(30,0))+1)asvarchar),@iLen)

execsp_executesql@SQLString,N@vIncrementvarchar(30)output,@vTempIDvarchar(30),@iLenint,@vIncrementout,@vTempID,@iLen

end

else

begin

select@vIncrement=001

end

end

end



用户创立基本档案时能够按以下相似表格局创立:

createtableCustomerClass(

vIDvarchar(30)constraintpkCustomerClassprimarykey,

vCustomerClassNamevarchar(40)NOTNULL,

vRemarksvarchar(80)NULL,

vParentIDvarchar(30)NULL,

iDepthIntNOTNULL

)



别的用户假如要在SQL查询剖析器举行测试时可用以下办法举行测试:

declare@valuevarchar(30)

execprcIDAutoGen,0,1,CustomerClass,@vIncrement=@valueoutput

select@value



insertcustomerclassvalues(001,a,a,null,1)



declare@valuevarchar(30)

execprcIDAutoGen001,1,1,CustomerClass,@vIncrement=@valueoutput

select@value



insertcustomerclassvalues(001001,b,b,001,2)



declare@valuevarchar(30)

execprcIDAutoGen001,1,1,CustomerClass,@vIncrement=@valueoutput

select@value



declare@valuevarchar(30)

execprcIDAutoGen001001,2,0,CustomerClass,@vIncrement=@valueoutput

select@value



顺次类推,在此不举(注重实行时三个语句一同实行)



(完)
mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。
莫相离 该用户已被删除
沙发
 楼主| 发表于 2015-1-19 14:33:08 | 只看该作者
光写几个SQL实在叫无知。
变相怪杰 该用户已被删除
板凳
发表于 2015-1-25 21:27:23 | 只看该作者
是要和操作系统进行Socket通讯的场景。否则建议慎重!
第二个灵魂 该用户已被删除
地板
发表于 2015-2-4 03:54:08 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
蒙在股里 该用户已被删除
5#
发表于 2015-2-9 15:07:09 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
金色的骷髅 该用户已被删除
6#
发表于 2015-2-27 07:48:24 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
谁可相欹 该用户已被删除
7#
发表于 2015-3-8 23:49:28 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
若相依 该用户已被删除
8#
发表于 2015-3-16 18:52:27 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
9#
发表于 2015-3-23 00:14:41 | 只看该作者
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 23:04

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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