我使用动态db名称创建存储过程。但我不能让我以后指定参数SQL Server:存储过程中的动态数据库名称
@BatchStartTime = N'2013/12/26 15:00:00',
@BatchEndTime = N'2013/12/26 15:30:00',
@DBName = N'MYDATABASE'
这里是我的示例代码运行它:
ALTER PROCEDURE [dbo].[newSpMurexTest]
@BatchStartTime AS VARCHAR(30),
@BatchEndTime AS VARCHAR(30),
@DBName AS VARCHAR(30)
AS BEGIN
declare @vwAllTrans nvarchar(max)
set @vwAllTrans = N'select T.fin_payAmt, C.fin_midAmt, C.myr_equivalent from '+ QUOTENAME(@DBName) +'.dbo.tbl_transaction_history as H
inner join '+ QUOTENAME(@DBName) + '.dbo.tbl_transaction_cancellation as C on H.transaction_id = C.trans_id
inner join '+ QUOTENAME(@DBName) +'.dbo.tbl_transaction as T on H.transaction_id = T.transaction_id
where H.dt_last_chg >= @BatchStartTime H.dt_last_chg <= @BatchEndTime and (H.new_status IN (7))'
EXECUTE sp_executesql @vwAllTrans
,'@BatchStartTime AS VARCHAR(30), @BatchEndTime AS VARCHAR(30)'
, @BatchStartTime, @BatchEndTime
END
如果删除@vwAllTrans
我可以运行查询,直接选中它并更换@dbname
,@BatchStartTime
和@BatchEndTime
..我搞砸了它的查询时,它把它放在@vwAllTrans
和exec呢?
这是mysql还是sql server? –
是否有可能您的BatchStartTime,BatchEndTime或DBName为空? – PeterRing
不,我已确保BatchStartTime,BatchEndTime或DBName不为null..this是微软的SQL服务器 – user2085499