当前位置: 代码迷 >> Sql Server >> 关于存储过程中的库名怎么使用动态参数实现
  详细解决方案

关于存储过程中的库名怎么使用动态参数实现

热度:54   发布时间:2016-04-24 18:33:13.0
关于存储过程中的库名如何使用动态参数实现!
本帖最后由 aqiang566971 于 2014-02-22 09:57:28 编辑
关于存储过程中的库名如何使用动态参数实现!对不起没有积分了!

现在不知道@BsTableName.dbo.[work_pz_sj] 语法该怎么写!

现在的代码:

/*
  函数名称: huoqu_next
  函数功能:获取会员回访下一条数据
  参数说明:
@BsTableName        
@FzTableName        
@gongsiNo           公司编号
@Card_jlrq_start    查找会员卡建立日期
@Card_jlrq_end      到此日期日期
@work_no            维修单号
*/
CREATE PROCEDURE huoqu_next
@BsTableName varchar(255),       -- 表名
@FzTableName varchar(255),
@gongsiNo varchar(10),
@Card_jlrq_start datetime,
@Card_jlrq_end datetime,
@work_no varchar(50)
as
SET nocount on
if OBJECT_ID('tempdb..#temp') is not null
  drop table #temp
SELECT a.card_no ,a.Card_jlrq ,a.card_kehu_mc ,a.card_kehu_shouji,
       a.gongsiNo ,a.gongsiMc ,MAX(b.work_no) work_no ,
       b.xche_ssje ,min(c.wxxm_mc) wxxm_mc ,

       identity(int,1,1) rownum
       into #temp
FROM  @BsTableName.dbo.[Card] a
LEFT JOIN @BsTableName.dbo.[work_pz_sj] b
       ON a.card_no = b.card_no
LEFT JOIN @BsTableName.dbo.[work_mx_sj] c ON b.work_no = c.work_no
WHERE a.gongsiNo=@gongsiNo  and  a.Card_jlrq >=@Card_jlrq_start
and a.Card_jlrq <=@Card_jlrq_end
and not exists(select 1 from @FzTableName.dbo.[NewMemberVisit] n
               where a.card_no = n.card_no)
GROUP BY a.card_no ,a.Card_jlrq ,a.card_kehu_mc ,a.card_kehu_shouji,
         a.gongsiNo,a.gongsiMc ,b.xche_ssje
ORDER BY card_jlrq ASC

select *
from #temp t
where rownum =(select rownum+1 from #temp t where work_no=@work_no)
GO


------解决方案--------------------
引用:
Quote: 引用:

大概就是修改成这样:

/*
  函数名称: huoqu_next
  函数功能:获取会员回访下一条数据
  参数说明:
@BsTableName        
@FzTableName        
@gongsiNo           公司编号
@Card_jlrq_start    查找会员卡建立日期
@Card_jlrq_end      到此日期日期
@work_no            维修单号
*/
CREATE PROCEDURE huoqu_next
@BsTableName varchar(255),       -- 表名
@FzTableName varchar(255),
@gongsiNo varchar(10),
@Card_jlrq_start datetime,
@Card_jlrq_end datetime,
@work_no varchar(50)
as

SET nocount on

if OBJECT_ID('tempdb..#temp') is not null
  drop table #temp
  
create table #temp(下面sql语句的字段 数据类型)  

declare @sql varchar(8000)

set @sql = 
'
SELECT a.card_no ,a.Card_jlrq ,a.card_kehu_mc ,a.card_kehu_shouji,
       a.gongsiNo ,a.gongsiMc ,MAX(b.work_no) work_no ,
       b.xche_ssje ,min(c.wxxm_mc) wxxm_mc ,

       identity(int,1,1) rownum
       into #temp
FROM  '+@BsTableName+'.dbo.[Card] a
LEFT JOIN @BsTableName.dbo.[work_pz_sj] b
       ON a.card_no = b.card_no
LEFT JOIN '+@BsTableName+'.dbo.[work_mx_sj] c ON b.work_no = c.work_no
WHERE a.gongsiNo='''+@gongsiNo+'''  and  a.Card_jlrq >='''+@Card_jlrq_start+''' 
 and a.Card_jlrq <='''+@Card_jlrq_end+''' 
 and not exists(select 1 from '+@FzTableName+'.dbo.[NewMemberVisit] n
               where a.card_no = n.card_no)
GROUP BY a.card_no ,a.Card_jlrq ,a.card_kehu_mc ,a.card_kehu_shouji,
         a.gongsiNo,a.gongsiMc ,b.xche_ssje
ORDER BY card_jlrq ASC
'

insert into #temp
exec(@sql)

select *
from #temp t
where rownum =(select rownum+1 from #temp t where work_no=@work_no)
GO



nvarchar
  相关解决方案