【发布时间】:2013-07-06 12:54:55
【问题描述】:
我正在尝试使用第一个存储过程的结果,它为我提供了分配给特定专家的建议列表。根据该结果,我想要这些提案的相关项目。
我的第一个查询是:
ALTER proc [dbo].[sp_ExpsAssignedProp]
(
@username as varchar(50)
)
as
begin
select pro.ProposalID,pro.Title,pro.GrantAmount from tbl_Registration reg
inner join tbl_Expert exp On reg.RegID=exp.RegID
inner join tbl_Panel pan On pan.ExpertID_1=exp.ExpertID
OR pan.ExpertID_2=exp.ExpertID
OR pan.ExpertID_3=exp.ExpertID
inner join tbl_Association asso On asso.PanelID=pan.PanelID
inner join tbl_Proposal pro On asso.ProposalID=pro.ProposalID
where reg.Username=@username
end
现在我正在尝试将其结果用于第二个查询,但它给了我所有状态为已完成的项目。我关心的是让分配的提案的项目状态为已完成。
alter proc [dbo].sp_AssignedProj
(
@username as varchar(50),
@status as varchar(50)
)
as
begin
exec sp_ExpsAssignedProp
select proj.ProjectID, proj.Title, proj.Budget, proj.StartDate, proj.FinishDate, proj.CurrentStatus from
tbl_Proposal prop
inner join tbl_Project proj On prop.ProposalID=proj.ProposalID
where CurrentStatus=@status
end
【问题讨论】:
-
SQL 只是 结构化查询语言 - 许多数据库系统使用的语言,但不是数据库产品...很多事情都是特定于供应商的 - 所以我们真的需要知道您正在使用什么数据库系统(以及哪个版本)(请相应地更新标签)......
-
附注(假设您使用的是 SQL Server):您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀! -
@marc_s 谢谢。我不知道命名存储过程。
-
stackoverflow.com/questions/20105443/… 这可能是一个重复的问题恕我直言。但我会让你决定留下与否。
标签: sql sql-server-2012-express