实在是不会写啊!!请教一个超级难的存储过程问题!!!

时间:2021-12-29 21:55:07
我有两张数据表,数据表B中保存的是“发表文章”“发表时间”和用户“ID”三个字段的数据,数据表A中保存的是用户“ID”和对应的“用户名”这两个字段。表A中的“ID”是主键,表B中的“ID”是它的外键。

我已有一个存储过程sp1(!!!注:sp1带有输入参数,用以按传入参数输出满足条件的所有记录),我现在想再写一个存储过程sp2,在sp2中引用sp1(sp2使用跟sp1完全相同的传入参数,用以实现将参数传入sp2中的sp1),sp2除了输出原sp1输出的所有字段,并增加输出一个表A中的“用户名”字段(当然,要和每一条输出的记录对应)。

大哥们,求求你们帮帮我吧!!!我现在很着急,我语法不过关,写不出这样的存储过程来!但愿你们不要嫌弃我给的30分,我就只有这么30分了。我知道写这个有点烦,但是我还是希望你们能帮帮我,小弟先谢谢你们了!!!要是我上面的描述你们还有不清楚的地方,请向我提出,我在线等,马上回答。谢谢了!!!

5 个解决方案

#1


create procedure sp2
@p1 类型,        //参数是sp1的参数
@p2 类型,
......
as
create table #tmp(字段1 类型,........)  //与sp1返回表结构相同
insert #tmp exec sp1 @p1,@p2,........

select (select [用户名] from A where ID=A.用户ID),* from #tmp A
drop table #tmp

go

#2


楼上大哥,要是存储过程sp1返回的是*的话,也就是说它返回的字段名字不确定的话,那create table #tmp(字段1 类型,........)的括号中有该怎么写呢??
还有,要是一个ID在A表中对应了多篇文章,那么"select [用户名] from A where ID=A.用户ID"这句话又没有问题呢??是不是应该为"select [用户名] from B where ID=A.用户ID"??
谢谢!!!

#3


存储过程sp1可以输出多条记录?请问结果是怎么输出的!!

#4


create procedure sp2
@p1 Varchar(250)
as
 Exec('Select a.ID,a.用户名,b.发表文章,b.发表时间 From a inner Join b on a.id = b.id Where ' +@p1 )
 Exec sp1 @p1

#5


你执行一下sp1就可以看到结果集的表结构
A中ID和用户名不是一对一?

#1


create procedure sp2
@p1 类型,        //参数是sp1的参数
@p2 类型,
......
as
create table #tmp(字段1 类型,........)  //与sp1返回表结构相同
insert #tmp exec sp1 @p1,@p2,........

select (select [用户名] from A where ID=A.用户ID),* from #tmp A
drop table #tmp

go

#2


楼上大哥,要是存储过程sp1返回的是*的话,也就是说它返回的字段名字不确定的话,那create table #tmp(字段1 类型,........)的括号中有该怎么写呢??
还有,要是一个ID在A表中对应了多篇文章,那么"select [用户名] from A where ID=A.用户ID"这句话又没有问题呢??是不是应该为"select [用户名] from B where ID=A.用户ID"??
谢谢!!!

#3


存储过程sp1可以输出多条记录?请问结果是怎么输出的!!

#4


create procedure sp2
@p1 Varchar(250)
as
 Exec('Select a.ID,a.用户名,b.发表文章,b.发表时间 From a inner Join b on a.id = b.id Where ' +@p1 )
 Exec sp1 @p1

#5


你执行一下sp1就可以看到结果集的表结构
A中ID和用户名不是一对一?