这样操作是否可行

sms88 2008-10-26 11:41:25
数据库中有张这样的表:
ID Name
89 zhao
...

但是起始ID和结束ID都不清楚,并且ID不一定是连续的,ID是按升序排序的。客户端也不知道所有的Name。
所以客户端程序发送1给服务端,服务端就调用SQL语句返回数据库中的第1条记录。然后客户端程序发送2给服务端,服务端就调用SQL语句返回数据库中的第2条记录,...服务端没有第n条记录时就返回一错误码给客户端,客户端就不再发送请求给服务端,


...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
octwind 2008-10-27
  • 打赏
  • 举报
回复

If Object_id('User','U') Is Not null
Drop Table [User]
Go
Create Table [User](ID int Not null,[Name] nvarchar(50),Constraint PK_User_ID Primary Key(ID Asc))
Go
Insert Into [User] Select 89,'Zhao' union all
Select 99,'li'
Go
If Object_id('rUserByID','P') Is Not null
Drop Proc rUserByID
Go

Create Proc rUserByID
(@ID int)
As
declare @sql varchar(100)
declare @count int
set @sql ='Select top 1 ID,Name From (select top '+cast(@ID as varchar(100))+' ID,Name from [User]) a order by id desc'
select @count=count(*) from [user]
if (@count<@ID)
Raiserror 50001 '找不到记录!'
else
exec(@sql)
Go
Exec rUserByID 2
/*
ID Name
----------- --------------------------------------------------
99 li
*/
sms88 2008-10-27
  • 打赏
  • 举报
回复
我是想通过查询在数据库中的第n条记录而已,参数为n,
水族杰纶 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sms88 的回复:]
C/C++ code
Exec rUserByID 89




你这是知道了ID
[/Quote]
--沒太明白你的意思
If Object_id('User','U') Is Not null
Drop Table [User]
Go
Create Table [User](ID int Not null,[Name] nvarchar(50),Constraint PK_User_ID Primary Key(ID Asc))
Go
Insert Into [User] Select 89,'Zhao1'
Insert Into [User] Select 90,'Zhao2'
Insert Into [User] Select 100,'Zhao3'
Insert Into [User] Select 10,'Zhao4'
Go
If Object_id('rUserByID','P') Is Not null
Drop Proc rUserByID
Go
Create Proc rUserByID
(@ID int)
As
if not exists(Select ID,Name From [User] Where ID=@ID)
Raiserror 50001 '找不到记录!'
else
Select top 1 ID,Name From [User] Where ID=@ID
Go
Exec rUserByID 1
/*
伺服器: 訊息 50001,層級 16,狀態 1,程序 rUserByID,行 5
找不到记录!*/
sms88 2008-10-27
  • 打赏
  • 举报
回复

Exec rUserByID 89


你这是知道了ID
水族杰纶 2008-10-26
  • 打赏
  • 举报
回复
If Object_id('User','U') Is Not null
Drop Table [User]
Go
Create Table [User](ID int Not null,[Name] nvarchar(50),Constraint PK_User_ID Primary Key(ID Asc))
Go
Insert Into [User] Select 89,'Zhao'
Go
If Object_id('rUserByID','P') Is Not null
Drop Proc rUserByID
Go
Create Proc rUserByID
(@ID int)
As
if not exists(Select ID,Name From [User] Where ID=@ID)
Raiserror 50001 '找不到记录!'
else
Select ID,Name From [User] Where ID=@ID
Go
Exec rUserByID 89
/*

(所影响的行数为 1 行)

ID Name
----------- --------------------------------------------------
89 Zhao

(所影响的行数为 1 行)

*/
Andy-W 2008-10-26
  • 打赏
  • 举报
回复
If Object_id('User','U') Is Not null
Drop Table [User]
Go
Create Table [User](ID int Not null,[Name] nvarchar(50),Constraint PK_User_ID Primary Key(ID Asc))
Go
Insert Into [User] Select 89,'Zhao'
Go
If Object_id('rUserByID','P') Is Not null
Drop Proc rUserByID
Go
Create Proc rUserByID
(@ID int)
As
Select ID,Name From [User] Where ID=@ID
If @@Rowcount =0
Raiserror 50001 '找不到记录!'
Go
Exec rUserByID 1

/*
(0 行受影响)
消息 50001,级别 16,状态 1,过程 rUserByID,第 6 行
找不到记录!

*/
takeshe 2008-10-26
  • 打赏
  • 举报
回复
关注

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧