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

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来判断读取那个表的内容,并返回读取内容
先谢谢各位了!
...全文
275 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
浩方软件HFWMS 2006-01-19
  • 打赏
  • 举报
回复
如果你想读那个表的内容,直接加个flag标志来确定不就OK了么
再用if ...else ...去判断所要执行的代码呀

例如:if flag=1
读表1
else if flag=2
....
浩方软件HFWMS 2006-01-19
  • 打赏
  • 举报
回复
根据参数@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
这样解决不了,麻烦各位高人了!

34,838

社区成员

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

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