存储过程高手求解

西南黑少 2013-08-15 04:49:26
select sum(Convert(int,t.para_value)) ,t.para_key from (
select * from biz_order_para where order_id in (2906,2907,2908,2909,2910,2911)
) t where t.para_key in ('Quota','Traffic','DBSpace') group by t.para_key
怎么把这个写成一个存储过程,说明:in 后面的需要从程序里面动态传入
...全文
145 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shawn 2013-08-15
  • 打赏
  • 举报
回复
ALTER PROC up_test
	@orderid NVARCHAR(max),
	@parakey NVARCHAR(max)
AS
SET NOCOUNT ON
DECLARE @sql nvarchar(MAX)
SET @sql = N'
SELECT  SUM(CONVERT(INT, t.para_value)) ,
        t.para_key
FROM    ( SELECT    *
          FROM      biz_order_para
          WHERE     order_id IN ({1})
        ) t
WHERE   t.para_key IN ({2})
GROUP BY t.para_key
'
SET @sql = REPLACE(@sql, '{1}', @orderid)
SET @sql = REPLACE(@sql, '{2}', @parakey)
--print @sql
EXEC(@sql)

GO

EXEC up_test ' 2906, 2907, 2908, 2909, 2910, 2911', '''Quota'', ''Traffic'', ''DBSpace'''

 
csl_1022 2013-08-15
  • 打赏
  • 举报
回复
create Procedure sp_Test @Id varchar(1000), @Key varchar(2000) as begin select @Id=''''+REPLACE(@Id,',',''',''')+'''' select @Key=''''+REPLACE(@Id,',',''',''')+'''' exec('sql语句') end 你自己把那个sql语句拼接吧 上面定义的两个变量替代in里面的

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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