小问题那上结贴

phoebuswei 2009-02-27 04:31:24
一个表,有一个字段当这个字段与传入值一样是
执行一个sql,不一样执行另外一个sql
写了过程,总是报错帮我看看


CREATE PROCEDURE GetPkztWritBack
@id int,
@code nvarchar(50)
AS
DECLARE @TempID int
SELECT @TempID = count(1) FROM [NewsWriteBack] WHERE mcode=@code
IF @TempID = 0
select [datetime],[phone]='',[name],[floor] from [NewsWriteBack] where newscode=@id
ELSE
select [id],[mcode],[newscode],[content],[datetime] from [NewsWriteBack] where newscode=@id

GO
...全文
79 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
phoebuswei 2009-02-27
  • 打赏
  • 举报
回复
能帮个忙,写个现成得,真不是懒,实在是不行
我的理解就是这个样子了
phoebuswei 2009-02-27
  • 打赏
  • 举报
回复
我这样行不

CREATE PROCEDURE GetPkztWritBack
@id int,
@code nvarchar(50)
AS
begin

IF exists(SELECT count(1) FROM [NewsWriteBack] WHERE (mcode=@code) = 0)
select [datetime],[phone]='',[name],[floor] from [NewsWriteBack] where newscode=@id
ELSE
select [id],[mcode],[newscode],[content],[datetime] from [NewsWriteBack] where newscode=@id
end
GO
phoebuswei 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ks_reny 的回复:]
存儲過程的格式要正確.
as
begin
...
end
go
[/Quote]
加上了啊
ks_reny 2009-02-27
  • 打赏
  • 举报
回复
存儲過程的格式要正確.
as
begin
...
end
go
phoebuswei 2009-02-27
  • 打赏
  • 举报
回复
我看了您发的连接,我想用不着结果集中查询
其实就是要根据一个参数的两种状态
执行两个select,差别也就是字段不一样



CREATE PROCEDURE ABC
AS
SELECT
*
FROM [table]

执行一个是这个样吧,

加一个状态这样吧

DECLARE @TempID int
SELECT @TempID = count(1) FROM [NewsWriteBack] WHERE mcode=@code

分别执行怎么就不行了

IF @TempID > 0
select [id],[mcode],[newscode],[content],[datetime] from [NewsWriteBack] where newscode=@id
ELSE
select [datetime],[phone]='',[name],[floor] from [NewsWriteBack] where newscode=@id
phoebuswei 2009-02-27
  • 打赏
  • 举报
回复
只是通过一个状态,执行不同的sql真么麻烦啊
临时表是不是要用 select into 创建啊
创建之后那怎么叫他返回结果集啊
dawugui 2009-02-27
  • 打赏
  • 举报
回复
参考这里:

如何在Ms sql中把 执行的存储过程作为一个数据集合再次查询? 
例如我可以
with dateset as (select * from a) select * from dateset
却不可以
with dateset as(执行存储过程返回的结果集合)select * from dateset
原本以为with dateset as可以派上用途,结果不然,
如何直接解决Ms中存储过程作为查询结果集的方案?
呵呵大家有无更好的SQl语句分享下?
其他好的构思也可以赞个。。。呵呵

http://topic.csdn.net/u/20090227/11/a6c481e7-863c-49a1-be91-9db1e6bb2745.html
百年树人 2009-02-27
  • 打赏
  • 举报
回复

CREATE PROCEDURE GetPkztWritBack
@id int,
@code nvarchar(50)
AS
DECLARE @TempID int
SELECT @TempID = count(1) FROM [NewsWriteBack] WHERE mcode=@code
IF @TempID > 0
select [id],[mcode],[newscode],[content],[datetime] from [NewsWriteBack] where newscode=@id
ELSE
select [datetime],[phone]='',[name],[floor] from [NewsWriteBack] where newscode=@id
dawugui 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 phoebuswei 的回复:]
您这个不返回结果集和啊
命令成功完成(所影响的行数为 -1 行)
[/Quote]
结果集是显示.

如果需要对结果集进行进一步的操作,需要把数据插入到临时表(临时使用的表),然后对临时表进行操作.用完后再删除临时表.
wen1512 2009-02-27
  • 打赏
  • 举报
回复
as
begin
...
end
go
phoebuswei 2009-02-27
  • 打赏
  • 举报
回复
您这个不返回结果集和啊
命令成功完成(所影响的行数为 -1 行)
dawugui 2009-02-27
  • 打赏
  • 举报
回复
CREATE PROCEDURE GetPkztWritBack
@id int,
@code nvarchar(50)
AS
begin
DECLARE @TempID int
SELECT @TempID = count(1) FROM [NewsWriteBack] WHERE mcode=@code
IF @TempID = 0
select [datetime],[phone]='',[name],[floor] from [NewsWriteBack] where newscode=@id
ELSE
select [id],[mcode],[newscode],[content],[datetime] from [NewsWriteBack] where newscode=@id
end
GO

34,576

社区成员

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

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