Microsoft SQL Server R2 官方下载地址(收藏,非MSDN)
作者:李嘉 日期:2011-09-12 08:27
MsSQL实现多字段模糊查询的简便方法
作者:李嘉 日期:2010-11-10 15:01
关于T-SQL中什么是DML语句, DML语句是什么意思?
作者:李嘉 日期:2010-08-20 10:46
SQL2005自动备份和自动删除7天前的备份
作者:李嘉 日期:2010-03-26 22:55
关于SQL SERVER 2000 2005临时表的问题
作者:李嘉 日期:2010-02-24 10:10
SQL Server 2000(MsSQL 2000)中如何进行格式化日期yyyy-mm-dd比较最佳解决方案
作者:李嘉 日期:2009-10-06 20:44
有些时候,我们需要在SQL Server 2000(MsSQL 2000)中进行日期比较,那么如何比较呢?
参考如下的例子进行比较即可:
DECLARE @D1 DATETIME
SELECT @D1 = '10 4 2009 12:00AM'
DECLARE @D2 DATETIME
SELECT @D2 = getdate()
SELECT CONVERT(char(11),@D1,120),CONVERT(char(11),@D2,120) WHERE @D1<@D2
当@D1小于@D2的时候,则输出@D1和@D2被格式化成yyyy-mm-dd的日期。
如何每次INSERT一条SELECT的数据时候取得@@IDENTITY并做一些操作
作者:李嘉 日期:2009-06-26 17:43
提问:
INSERT INTO TABLE1(Title,Created) SELECT Title,getdate() FROM TABLE2 WHERE TABLE2.ID IN (1,2,3,4,5,6)
DECLARE @ID INT; /* 用于得到Insert之后自动增长列的值 */
SELECT @ID=@@IDENTITY;
如上语句,我使用INSERT INTO...SELECT...方式批量插入数据,一共插入了六条数据,我想每次INSERT一条的时候取得@@IDENTITY并做一些操作,如上代码是执行完一段批量INSERT再去得到@@IDENTITY就只能获取最后一个INSERT的数据的自动增长列的ID号。
请问:我如何每次INSERT一条SELECT的数据时候取得@@IDENTITY并做一些操作
回答:
目前只能使用游标来操作,如下代码所示:
/* copy stages */
Declare @Title NVARCHAR(1000)
Declare @Created DATETIME
Declare @SortNumber INT
Declare cur_Stages Cursor
For SELECT Title,getdate() AS Created,SortNumber FROM PR_Stage WHERE StageID IN (SELECT StageID FROM PR_WorkflowStage WHERE WorkflowID=@WorkflowID)
Open cur_Stages
Fetch From cur_Stages into @Title,@Created,@SortNumber
While @@Fetch_Status=0
Begin
INSERT INTO PR_CloneStage(Title,Created,Creator,SortNumber) VALUES(@Title,@Created,@Creator,@SortNumber)
DECLARE @SID INT;
SELECT @SID=@@IDENTITY;
/* 这里放置你需要进行的操作 */
Fetch From cur_Stages into @Title,@Created,@SortNumber
End
Close cur_Stages
Deallocate cur_Stages
以上你Ms Sql2000的一个应用,只给出一个思路,sql2005和2008或许有更好的方法。
SQL Server 2000如何将Select得到的数据再Insert到另外一张表
作者:李嘉 日期:2009-06-22 21:45
刚刚客户有个要求,举个例子:目前有三张表:
- CandidateBase : 学生信息表(主键CandidateID)
- ProgramBase : 科目信息表(CandidateID,ProgramID)
- CandidateProgram : 学生信息和科目信息关系表(主键ProgramID)
客户要求:给CandidateBase表中凡是Major字段为'MA-ARTE'的学生和ProgramBase表中NewProgramCode='MA-ARTE'的科目做一下关联。
分析:CandidateBase表中Major字段为'MA-ARTE'的学生可能为多个,ProgramBase表中NewProgramCode='MA-ARTE'的科目只有一个,那么我们就得首先得到那个科目ID(ProgramID),然后将CandidateBase表中Major字段为'MA-ARTE'的学生Select出来再将ProgramID一起Insert到关系表中,代码如下:
DECLARE @ProgramID INT
SELECT @ProgramID=ProgramID FROM [dbo].ProgramBase WHERE NewProgramCode='MA-ARTE'
INSERT INTO CandidateProgram(CandidateID,ProgramID) SELECT CandidateID,@ProgramID FROM [dbo].CandidateBase WHERE Major='MA-ARTE'
这样就能轻松实现客户给予的要求了。
- 1
