在SqlServer2005中,可以这样:
declare @p int
select top (@p) * from 表名
在SqlServer2000中,不支持以上方法,可以这样:
declare @p int,@strSql varcher(1000)
set @strSql='select top '+convert(varchar,@p)+' * from 表名'
declare @p int
select top (@p) * from 表名
在SqlServer2000中,不支持以上方法,可以这样:
declare @p int,@strSql varcher(1000)
set @strSql='select top '+convert(varchar,@p)+' * from 表名'
exec @strSql
sql 存储过程里的if else while
一:if else
语法: if 条件 begin 执行的操作 end else begin 执行的操作 end
二:while
语法:while 条件 begin 执行操作 end
实例:
USE [OABusiness]
GO
/****** 对象: StoredProcedure [dbo].[inertdate] 脚本日期: 08/31/2012 15:30:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[inertdate]
(
@date datetime , --插入的日期
@flag int --判定插入的数据
)
AS
begin
declare @count int;--用户记录条数
set @count=null;
declare @count_add int ;--计数
set @count_add=1;
declare @Userid int ;--用户Userid
set @Userid =NUll;
declare @WorkHour int ;--插入的时间
declare @SignStatus int ;--状态
end
if @flag=0
begin
set @WorkHour=0
set @SignStatus=1
end
else if @flag=1
begin
set @WorkHour=28800
set @SignStatus=0
end
begin
--获取记录条数
select @count=count(*) from dbo.T_UserInfo where Away_YN !=1
--循环插入记录
while @count_add<@count+1
begin
select @Userid=UserID from
( select row_number() over(order by UserID asc) as num,UserID,Away_YN from dbo.T_UserInfo where Away_YN !=1) as tem
where num=@count_add
insert into dbo.T_SigninStatistics (UserID,SignDate,WorkHour,SignStatus) values(@Userid,@date,@WorkHour,@SignStatus)
set @count_add=@count_add+1
end
end