函数返回值

So_CooL 2009-09-23 02:27:13
表 sysflow
ordNo isAction actionDate
2000 Y 2009-09-23 08:36:00
2000 N NULL
2000 Y 2009-09-22 11:58:00
2000 Y 2009-09-22 11:58:00
2000 Y 2009-09-22 11:58:00
返回信息:处理中
ordNo isAction actionDate
2000 N NULL
2000 N NULL
2000 N NULL
2000 N NULL
2000 N NULL
返回信息:待处理
ordNo isAction actionDate
2000 Y 2009-09-22 12:55:00
2000 Y 2009-09-22 10:51:00
2000 Y 2009-09-22 11:58:00
2000 Y 2009-09-22 11:53:00
2000 Y 2009-09-22 11:54:00
返回信息:待处理
请用函数来写,主要是根据isAction的值是否相同 表为SysFlow
Create Function f_getStatus(@ordNo int)
...全文
248 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyihui01 2009-09-23
  • 打赏
  • 举报
回复
不知道行不行,望高手指教

CREATE FUNCTION f_getStatus(@ordNo int)
RETURN VARCHAR(20) AS
BEGIN
DECLARE @CountN int,@CountY int
DECLARE @ReturnValue varchar(50),@isAction varchar(8)
DECLARE @CheckValue CURSOR
SET @CountN=0
SET @CountY=0
SET @CheckValue=CURSOR FOR SELECT isAction
FROM sysflow
WHERE ordNo=@ordNo
GROUP BY ordNo
OPEN @CheckValue
FETCH NEXT FROM @CheckValue INTO @isAction
WHILE @@FETCH_STATUS=0
BEGIN
IF @isAction='Y'
BEGIN
SET @CountY=@CountY + 1
END
IF @isAction='N'
BEGIN
SET @CountN=@CountN + 1
END
FETCH NEXT FROM @CheckValue INTO @isAction
END
CLOSE @CheckValue
IF @CountY>0 AND @CountN>0
BEGIN
@ReturnValue='处理中'
END
IF @CountY>0 AND @CountN=0
BEGIN
@ReturnValue='处理完'
END
IF @CountY=0 AND @CountN>0
BEGIN
@ReturnValue='待处理'
END
RETURN @ReturnValue
zxkid 2009-09-23
  • 打赏
  • 举报
回复
IF @ActionCount >= 2
RETURN N'处理中'
ELSE IF @isAction = N'Y'
RETURN N'已完成'
ELSE
RETURN N'待处理';
zxkid 2009-09-23
  • 打赏
  • 举报
回复
Create PROC f_getStatus(@ordNo int)
AS
BEGIN
DECLARE @isAction nvarchar(1), @ActionCount;

SELECT @ActionCount = COUNT(DISTINCT isAction), @isAction = MAX(isAction)
FROM SYSFLOW
WHERE ORDNO = @ordNo
GROUP BY ORDNO;

IF @ActionCount > 2
RETURN N'处理中'
ELSE IF @isAction = N'Y'
RETURN N'已完成'
ELSE
RETURN N'待处理';


END
So_CooL 2009-09-23
  • 打赏
  • 举报
回复
表 sysflow 数据如下:
ordNo isAction actionDate
2000 2009-09-22 12:55:00
2000 2009-09-22 12:55:00
2000 2009-09-22 12:55:00
isAction字段的值有3中情况:
如果isAction值都为Y,则返回的值为:已完成
如果isAction得值为N和Y,则返回的值为:处理中
如果isAction得值为N,则返回的值为:待处理
请用函数来写,变量@ordNo是sysFlow表中的ordNo字段
Create Function f_getStatus(@ordNo int )
Returns Varchar(20)
SQL77 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 so_cool 的回复:]
如果isAction值都为Y,则返回的值为:已完成
如果isAction得值为N和Y,则返回的值为:处理中
如果isAction得值为N,则返回的值为:待处理
[/Quote]
我晕,那上面的结果怎么来的
7761098 2009-09-23
  • 打赏
  • 举报
回复
主键是什么呢?isAction得值为N和Y
SQL77 2009-09-23
  • 打赏
  • 举报
回复
Create PROC f_getStatus(@ordNo int)
AS
BEGIN
SELECT '处理中:'+CHAR(13)+CHAR(10)
SELECT * FROM SYSFLOW WHERE isAction ='N' AND ORDNO=@ordNo

SELECT '待处理:'+CHAR(13)+CHAR(10)
SELECT * FROM SYSFLOW WHERE isAction ='Y' AND ORDNO=@ordNo
END


用存储过程,不知道理解错没
feixianxxx 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 so_cool 的回复:]
如果isAction值都为Y,则返回的值为:已完成
如果isAction得值为N和Y,则返回的值为:处理中
如果isAction得值为N,则返回的值为:待处理
[/Quote]
...
如果isAction值都为Y,则返回的值为:已完成
--
--
ordNo isAction actionDate
2000 Y 2009-09-22 12:55:00
2000 Y 2009-09-22 10:51:00
2000 Y 2009-09-22 11:58:00
2000 Y 2009-09-22 11:53:00
2000 Y 2009-09-22 11:54:00
返回信息:待处理
So_CooL 2009-09-23
  • 打赏
  • 举报
回复
表 sysflow
ordNo isAction actionDate
2000 N 2009-09-22 12:55:00
2000 Y 2009-09-22 12:55:00
2000 N 2009-09-22 12:55:00
isAction字段的值有3中情况
如果isAction值都为Y,则返回的值为:已完成
如果isAction得值为N和Y,则返回的值为:处理中
如果isAction得值为N,则返回的值为:待处理
So_CooL 2009-09-23
  • 打赏
  • 举报
回复
如果isAction值都为Y,则返回的值为:已完成
如果isAction得值为N和Y,则返回的值为:处理中
如果isAction得值为N,则返回的值为:待处理
victorcai2006 2009-09-23
  • 打赏
  • 举报
回复
LZ啥意思,没有看懂。能不能重新表述一下
华夏小卒 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 feixianxxx 的回复:]
╮(╯▽╰)╭ 我怎么现在都看不懂需求了...
[/Quote]
jia_guijun 2009-09-23
  • 打赏
  • 举报
回复
我也迷糊了。
feixianxxx 2009-09-23
  • 打赏
  • 举报
回复
╮(╯▽╰)╭ 我怎么现在都看不懂需求了...

34,590

社区成员

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

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