仓酷云

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

[学习教程] MSSQL网页设计革新SP到一数据库便利制造XSD文件

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

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

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

x
修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。数据|数据库|革新
----------------------------------------------------------------------------------
--革新SP到数据库--
----
--&Old&来历数据库名--
--&New&方针数据库名--
----
--方针数据库中表名为来历数据库中的用户自界说SP、FN等(可按提醒增加--具体提醒今后加)--
--表中的列名则为其参数--
----
--黄宗银--
--2005.01.19--
----------------------------------------------------------------------------------
ALTERPROCEDUREdbo.P_Ref
AS
DECLARE@SQLnvarchar(4000)

--不存在数据库则创立
IFNOTEXISTS(
SELECT[name]
FROMmaster.dbo.sysdatabases
WHERE[name]=&New&
)
BEGIN
CREATEDATABASE&New&
END

--掏出SP、FN、TF其name、id
DECLARE@TblCURSOR
SET@Tbl=CURSORLOCALSCROLLFOR
SELECT[name],[id]
FROM&Old&.dbo.sysobjects
--要增添革新范例请修正这里
WHERE([name]LIKEP%OR[name]LIKEF%OR[name]LIKETF%)
AND(type=PORtype=FNORtype=TF)

DECLARE@TblNamenvarchar(100)
DECLARE@TblIDint

--以@TblName为名创立表
OPEN@Tbl
FETCHNEXTFROM@TblINTO@TblName,@TblID
WHILE(@@FETCH_STATUS=0)
BEGIN
--已存在该表则删除
IFEXISTS
(
SELECT[name]FROM&New&.dbo.sysobjects
WHERE[name]=@TblName
ANDtype=U
)
BEGIN
SET@SQL=DROPTABLE+&New&+.dbo.+@TblName
EXECSP_ExecuteSQL@SQL
IF(@@ERROR0)
BEGIN
RAISERROR(删除已存在的表%s失利!,11,1,@TblName)
RETURN
END
END

--假如没有参数则跳过
IF((SELECTCount(*)FROMdbo.syscolumnsWHERE[name]LIKE@%AND[id]=@TblID)=0)
BEGIN
FETCHNEXTFROM@TblINTO@TblName,@TblID
CONTINUE
END

--掏出列名及其范例
DECLARE@ColCURSOR
SET@Col=CURSORLOCALSCROLLFOR
SELECT&Old&.dbo.syscolumns.[name],&Old&.dbo.systypes.[name]
FROM&Old&.dbo.syscolumnsLEFTOUTERJOIN
&Old&.dbo.systypesON&Old&.dbo.syscolumns.xtype=&Old&.dbo.systypes.xtype
WHERE&Old&.dbo.syscolumns.[name]LIKE@%
AND&Old&.dbo.syscolumns.[id]=@TblID
ORDERBY&Old&.dbo.syscolumns.colorder

DECLARE@ColNamenvarchar(50)
DECLARE@ColTypenvarchar(20)

--机关SQL语句
SET@SQL=CREATETABLE&New&.dbo.+@TblName+(
OPEN@Col
FETCHNEXTFROM@ColINTO@ColName,@ColType
DECLARE@ColNameLastnvarchar(50)
SET@ColNameLast=
WHILE(@@FETCH_STATUS=0)
BEGIN
SET@ColName=SubString(@ColName,2,Len(@ColName)-1)
--跳太重复的列
IF(@ColName@ColNameLast)
BEGIN
SET@SQL=@SQL+@ColName++@ColType+,
SET@ColNameLast=@ColName
END
FETCHNEXTFROM@ColINTO@ColName,@ColType
END
SET@SQL=SubString(@SQL,1,Len(@SQL)-1)
SET@SQL=@SQL+)

--实行SQL语句
EXECSP_ExecuteSQL@SQL
IF(@@ERROR0)
BEGIN
RAISERROR(创立表%s失利!,11,1,@TblName)
RETURN
END

--创立下一个表
FETCHNEXTFROM@TblINTO@TblName,@TblID
END

RETURN@@ERROR
提供TCP/IP、ODBC和JDBC等多种数据库连接路径。
冷月葬花魂 该用户已被删除
沙发
 楼主| 发表于 2015-1-19 20:37:07 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-25 21:30:05 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
山那边是海 该用户已被删除
地板
发表于 2015-2-4 02:43:50 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
海妖 该用户已被删除
5#
发表于 2015-2-9 11:47:53 | 只看该作者
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
只想知道 该用户已被删除
6#
发表于 2015-2-27 05:50:11 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
乐观 该用户已被删除
7#
发表于 2015-3-8 22:41:30 | 只看该作者
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
变相怪杰 该用户已被删除
8#
发表于 2015-3-16 16:29:34 | 只看该作者
入门没那么困难,精通没那么容易
小女巫 该用户已被删除
9#
发表于 2015-3-22 23:41:42 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-14 10:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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