[已解决问题] 求更简洁的方案
提问时间: 2008-04-02 11:06
悬赏分:10 浏览:194 次

需求为: 

标题   贡献人  修改 
内容描述 
相关文档下载 附件1说明   附件1下载            附件2说明   附件2下载          附件3说明   附件3下载 
审批: 未通过:<修改意见>                               通过 


我想把这个附件下载做成一个用户控件
因为还有蛮其他功能都可以上传附件
想关联的有六个表
他数据库是这样设计的
CREATE TABLE snm_attachment(
 aid    INTEGER   IDENTITY,
 subject   VARCHAR(50)  NOT NULL,
 description  TEXT,
 url    VARCHAR(255), -- 附件路径
 pubdate   DATETIME, -- 发布时间(上传时间)
 sid    INTEGER, -- FK_计划编号
 pid    INTEGER, -- FK_项目编号
 tid    INTEGER, -- FK_任务编号
 eid    INTEGER, -- FK_经验编号
 cid    INTEGER, -- FK_评论编号
 fid    INTEGER, -- FK_流程编号
 
 PRIMARY KEY (aid),
);
GO

我写了存储过程
create proc Proc_SelectattachmentByForeignID  --根据各外键查询附件信息
 @keyID int, --1 为sid 计划编号2为pid项目编号3为tid 任务编号4为eid 经验编号5为cid 评论编号6为fid流程编号
 @sid    INTEGER, -- FK_计划编号
 @pid    INTEGER, -- FK_项目编号
 @tid    INTEGER, -- FK_任务编号
 @eid    INTEGER, -- FK_经验编号
 @cid    INTEGER, -- FK_评论编号
 @fid    INTEGER -- FK_流程编号
as
 if(@keyID=1)
  select aid,subject,description,url,pubdate,sid from snm_attachment where sid=@sid
 if(@keyID=2)
  select aid,subject,description,url,pubdate,pid from snm_attachment where pid=@pid
 if(@keyID=3)
  select aid,subject,description,url,pubdate,tid from snm_attachment where tid=@tid
 if(@keyID=4)
  select aid,subject,description,url,pubdate,eid from snm_attachment where eid=@eid
 if(@keyID=5)
  select aid,subject,description,url,pubdate,cid from snm_attachment where cid=@cid
 if(@keyID=6)
  select aid,subject,description,url,pubdate,fid from snm_attachment where fid=@fid
go
现在问题是 传入的参数太多了
那后面的六个ID 都是唯一的 我要么样做啊 ?
 有没有简洁点的解决方案啊?


提问者:yeyang - 菜鸟二级
所有回答(1)
既然你已经知道他的表结构了,不妨试试这个:

--使用 MSSQL
CREATE PROCEDURE sp_GetAttaInfo
@columnName VARCHAR(30),
@value INT
AS
DECLARE @cmd NVARCHAR(MAX);
SET @cmd = N'SELECT aid,subject,description,url,pubdate,sid from snm_attachment WHERE [@columnName] = @para_value;';
SET @cmd = REPLACE(@cmd, N'@columnName', @columnName);

EXEC sp_executesql @cmd, N'@para_value INT', @para_value = @value;

RETURN
GO
3个月前   回答者:hireats - 菜鸟二级
评论
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除