我很惭愧,问这么简单的问题!!!!!!!!!!!!!!!!!

txgaozhao 2007-09-14 09:27:00
CREATE PROCEDURE BuyMessage
(
@recordid INT,
@buyid INT,
@sorb INT,
@sellid INT OUTPUT,
@result INT OUT
)
AS
if @sorb=0
SELECT @sellid=BuyId
FROM BuyM_View
WHERE RecordId=@recordid AND SellId=@buyid
else if @sorb=1
SELECT @sellid=SellId
FROM SellM_View
WHERE RecordId=@recordid AND BuyId=@buyid

IF @@ROWCOUNT >= 1
SELECT @result=1
ELSE
SELECT @result=0
GO
====================================================
以上存储过程的IF @@ROWCOUNT >= 1,我想用他来检查上面的语句是否执行过,执行过则令@result=1,否则@result=0.但是不知道怎么的每次我测试他都是@result=0.不知道何故?是不是IF @@ROWCOUNT >= 1的问题呢?注意上面用到了if else if的判断
...全文
461 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
crossrowman 2007-09-14
  • 打赏
  • 举报
回复

IF @sellid is null --@@ROWCOUNT >= 1
SELECT @result=0
ELSE
SELECT @result=1
txgaozhao 2007-09-14
  • 打赏
  • 举报
回复
也可以这样啊,两句合成一句:
SELECT @sellid=SellId,@iCount=count(*) FROM SellM_View WHERE RecordId=@recordid AND BuyId=@buyid
===========================
这个方法报错了
服务器: 消息 8120,级别 16,状态 1,过程 BuyMessage,行 26
选择列表中的列 'BuyM_View.GaoZhaoName' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
JYYCOM 2007-09-14
  • 打赏
  • 举报
回复
看了楼主的问题,我更惭愧。自愧不如。
楼主,请教两个问题,@@ROWCOUNT是不是返回当前所指表中的行数?
为什么在参数设置中第一个是OUTPUT来表示,最后一个参数用的却是OUT?
谢谢!
wyc_xiaoben 2007-09-14
  • 打赏
  • 举报
回复
学习 JF
wangkun9999 2007-09-14
  • 打赏
  • 举报
回复
也可以这样啊,两句合成一句:
SELECT @sellid=SellId,@iCount=count(*) FROM SellM_View WHERE RecordId=@recordid AND BuyId=@buyid
txgaozhao 2007-09-14
  • 打赏
  • 举报
回复
begin
set @iCount =(SELECT count(*) FROM BuyM_View WHERE RecordId=@recordid AND BuyId=@buyid )
SELECT @sellid=SellId FROM SellM_View WHERE RecordId=@recordid AND BuyId=@buyid
end
===========================
格式一定要这样子写的吗?
可以这样子写吗?
set @iCount =(SELECT @sellid=SellId FROM SellM_View WHERE RecordId=@recordid AND BuyId=@buyid)
txgaozhao 2007-09-14
  • 打赏
  • 举报
回复
不会吧,这么复杂的啊!!
shun1984a 2007-09-14
  • 打赏
  • 举报
回复
mark
wangkun9999 2007-09-14
  • 打赏
  • 举报
回复
declare @iCount int
if @sorb=0
begin
set @iCount =(SELECT count(*) FROM BuyM_View WHERE RecordId=@recordid AND SellId=@buyid )
SELECT @sellid=BuyId FROM BuyM_View WHERE RecordId=@recordid AND SellId=@buyid
end
else if @sorb=1
begin
set @iCount =(SELECT count(*) FROM BuyM_View WHERE RecordId=@recordid AND BuyId=@buyid )

SELECT @sellid=SellId FROM SellM_View WHERE RecordId=@recordid AND BuyId=@buyid
end

IF @iCount >= 1
SELECT @result=1
ELSE
SELECT @result=0
GO
NekChan 2007-09-14
  • 打赏
  • 举报
回复
将 @sellid 给一个初始值 -99999(建议,可以采用一个代表空的数据)
然后检测这个数,就知道前面的 select 是否有执行结果了。
NekChan 2007-09-14
  • 打赏
  • 举报
回复
SELECT 对于 @@ROWCOUNT 是没有影响的,所有的 SELECT 执行后的 @@ROWCOUNT 都是 0.
wangkun9999 2007-09-14
  • 打赏
  • 举报
回复
你要求行数的话,行这样写:
declare @iCount int
set @iCount =(SELECT count(*) FROM BuyM_View WHERE RecordId=@recordid AND SellId=@buyid )
freeboy827 2007-09-14
  • 打赏
  • 举报
回复
是不是返回的查询没有数据
txgaozhao 2007-09-14
  • 打赏
  • 举报
回复
wangkun9999(蜘蛛+Lucene.net构建搜索引擎)
========================================
大哥如果我要知道我是否select到东西的话,那该如何判断呢?
yangjia21_2007 2007-09-14
  • 打赏
  • 举报
回复
wangkun9999(蜘蛛+Lucene.net构建搜索引擎)
这个才对
yangjia21_2007 2007-09-14
  • 打赏
  • 举报
回复
sqlserver 里 不是用=么 不是==吧
txgaozhao 2007-09-14
  • 打赏
  • 举报
回复
两位大哥,我这个是存储过程,存储过程的判断都是用=号的,而不是==
wangkun9999 2007-09-14
  • 打赏
  • 举报
回复
@@ROWCOUNT是返回上一次更改的行数,对select语不起作用的.
下面是@@ROWCOUNT有语法:

@@ROWCOUNT
返回受上一语句影响的行数。

语法
@@ROWCOUNT

返回类型
integer

注释
任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。

示例
下面的示例执行 UPDATE 语句并用 @@ROWCOUNT 来检测是否有发生更改的行。

UPDATE authors SET au_lname = 'Jones'
WHERE au_id = '999-888-7777'
IF @@ROWCOUNT = 0
print 'Warning: No rows were updated'


jess_lv 2007-09-14
  • 打赏
  • 举报
回复
条件判时,要用==号而不是=号
jess_lv 2007-09-14
  • 打赏
  • 举报
回复
if @sorb=0
SELECT @sellid=BuyId
FROM BuyM_View
WHERE RecordId=@recordid AND SellId=@buyid
else if @sorb=1
SELECT @sellid=SellId
FROM SellM_View
WHERE RecordId=@recordid AND BuyId=@buyid


为个地方有问题!!是==而不是=
加载更多回复(1)

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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