悬赏分: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 都是唯一的 我要么样做啊 ?
有没有简洁点的解决方案啊?
|
既然你已经知道他的表结构了,不妨试试这个:
--使用 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 |