导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

!!高分跪求一存储过程,根据参数值的不同读取不同字段的值,并返回读取内容

xiaoke0518 2006-01-19 10:51:23
有三个表
my_Article,my_teacher,my_send
表主要结构如下
my_Article:
Articleid,content
my_teacher:
id,teacher_content,Articleid
my_send
mobile,Articleid
根据参数@mobile和@order来判断读取那个表的内容,并返回读取内容
先谢谢各位了!
...全文
192 点赞 收藏 18
写回复
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zheninchangjiang 2006-01-19
从两个表中选取内容,表结构不一致,两者的结果集属性值不一样
回复
zheninchangjiang 2006-01-19
由于存储过程是先编译后执行的,如果每次返回的结果集的属性值不同会产生元数据不一致的错误,所以这个存储过程要有一致的结果集.
回复
mislrb 2006-01-19
学习
回复
子陌红尘 2006-01-19
create procedure sp_test(@mobile varchar(20),@order varchar(100))
as
begin
if exists(select 1 from my_send where mobile=@mobile)
begin
select * from my_Article where Articleid=@order
end
else
begin
insert into my_send(mobile,Articleid) select @mobile,@order
select teacher_content from my_teacher where Articleid=@order
end
end
go
回复
lsqkeke 2006-01-19
理解清楚先再回帖
回复
xiaoke0518 2006-01-19
首先根据@mobile来判断my_send表时候有记录,有则根据参数@mobile决定读取那一篇文章,根据@order来决定是读取my_Article表还是读取my_teacher表,没有则在my_send表插入@mobile和@order的值,然后再判断读取那个表内容.

@order有字母和数字组成,例如@mobile为13612345678,@order为QC00010先判断my_send中是否mobile为13612345678的记录,有则读取my_Article表的内容,没有则在my_send表插入@mobile和@order的值然后再读取my_Article表的content的内容,
若@mobile为13612345678,@order为QC00010k功能同上,只是读取的内容为 my_teacher表的teacher_content.

表达的不太明白!见谅:)
回复
gujianmin 2006-01-19
只能顶了 libin_ftsafe(子陌红尘)
回复
子陌红尘 2006-01-19
--类似这样?
create proecdure sp_test(@mobile varchar(20),@order int)
as
begin
if @order=1
select * from my_Article where ...
if @order=2
select * from my_teacher where ...
if @order=3
select * from my_send where mobile=@mobile ...
end
go
回复
如果你想读那个表的内容,直接加个flag标志来确定不就OK了么
再用if ...else ...去判断所要执行的代码呀

例如:if flag=1
读表1
else if flag=2
....
回复
根据参数@mobile和@order来判断读取那个表的内容,并返回读取内容???
不明白楼主的所说
回复
xiaoke0518 2006-01-19
to:jilate() 不是那样的,
my_send表手机号、文章编、文章读取状态号和教师评语状态号,my_teacher是教师评语,my_Article是文章内容,根据@mobile和@order来读取相应的内容,是我没有表达清楚,不好意思!
回复
xiaoke0518 2006-01-19
不过那不是我所要的结果!
回复
xiaoke0518 2006-01-19
谢谢libin_ftsafe(子陌红尘)
是我弄错了!
回复
jilate 2006-01-19
不明白楼主的意思。
根据参数@mobile和@order来判断读取那个表的内容,并返回读取内容
是否是 @mobile表示表名 @order表示字段?

如果是的话,不知道这个存储过程是不是
create procedure sp_test
@mobile varchar(20),
@order varchar(100)
as
declare @str_Sql VARCHAR(400)
select @str_Sql = "SELECT " + @order + " FROM " + @mobile
SP_EXECUTESQL(@str_Sql)
go
回复
子陌红尘 2006-01-19
create procedure sp_test(@mobile varchar(20),@order varchar(100))
as
begin
--先判断my_send中是否存在mobile为@mobile的记录
if exists(select 1 from my_send where mobile=@mobile)
begin
--存在,根据@order读取my_Article表中内容
select * from my_Article where Articleid=@order
end
else
begin
--不存在,my_send表插入@mobile和@order的值
insert into my_send(mobile,Articleid) select @mobile,@order

--根据@order读取相关表信息
if right(@order,1)='k'
select teacher_content from my_teacher where Articleid=@order
else
select * from my_Article where Articleid=@order
end
end
go
回复
-狙击手- 2006-01-19
create procedure sp_test(@mobile varchar(20),@order varchar(100))
as
begin
if exists(select 1 from my_send where mobile=@mobile)
begin
select * from my_Article where Articleid=@order
end
else
begin
insert into my_send(mobile,Articleid) select @mobile,@order
if right(@order,1) = 'k'
select teacher_content from my_teacher where Articleid=@order
else
select content from my_Article where Articleid=@order
end
end
go
回复
子陌红尘 2006-01-19
--有什么问题?
----------------------------------------------------------------------------------------------------------------------
create procedure sp_test(@mobile varchar(20),@order varchar(100))
as
begin
--先判断my_send中是否存在mobile为@mobile的记录
if exists(select 1 from my_send where mobile=@mobile)
begin
--存在,根据@order读取my_Article表中内容
select * from my_Article where Articleid=@order
end
else
begin
--不存在,my_send表插入@mobile和@order的值
insert into my_send(mobile,Articleid) select @mobile,@order
--根据@order读取my_Article表的content的内容
select teacher_content from my_teacher where Articleid=@order
end
end
go
回复
xiaoke0518 2006-01-19
先谢谢libin_ftsafe(子陌红尘)
create procedure sp_test(@mobile varchar(20),@order varchar(100))
as
begin
if exists(select 1 from my_send where mobile=@mobile)
begin
select * from my_Article where Articleid=@order
end
else
begin
insert into my_send(mobile,Articleid) select @mobile,@order
select teacher_content from my_teacher where Articleid=@order
end
end
go
这样解决不了,麻烦各位高人了!
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告