Как передать параметр даты в операторе openquery

У меня одна процедура

Create procedure [dbo].[daily_stats]
@date datetime, @grouping varchar(150)
as

select callid,campaignid,dnis,anidigits,callstarttime,totalcalltime,agenttalktime,agentid,abandon,queuewaittime,calltype,call_acw,datestamp,bill_flag,
queueid,queuename,calldelayed, callholdtime, shortcall,ctr_name,role_name,team_name,callhold_times,agent_fullname,xferto,timeafterxfer,
obcallids,obcalls,obtime,orgname, getdate() as ImportedDate

into #tempid7

from openquery(orapr2, 'select * from sp_calldetail
where trunc(callstarttime) >= trunc(sysdate-1) and abandon in (0,1) and (upper(campaignid) in (''SYNAPSE'', ''SYNAPSECALLBACK'') or campaignid like ''ME%'')')

Я хочу пройти @date значение в trunc(sysdate-1), Как я могу это сделать?

2 ответа

Я обнаружил, что должен был преобразовать дату и время в формат Oracle - например:

TO_DATE(''''' + CONVERT(varchar(10), @From, 120) + ''''',''''YYYY-MM-DD'''')

В противном случае он вернул ошибку - Неверный месяц

как передать параметр даты в операторе openquery

Вместо того, чтобы использовать openquery функция, которую вы могли бы попробовать это решение

EXEC LINKEDSVR_BUH_03.TestUPSERT.dbo.Customer_Select @pCustomerID = 2
EXEC LINKEDSVR_BUH_03..dbo.Customer_Select @pCustomerID = 2 -- It uses default database (see Catalog property for linked server)

или это

EXEC (N'TestUPSERT.dbo.Customer_Select ?', 2) AT LINKEDSVR_BUH_03
EXEC (N'dbo.Customer_Select ?', 2) AT LINKEDSVR_BUH_03 -- It uses default database (see Catalog property for linked server)
                            ^----- parameter placeholder
                                ^----- parameter value
Другие вопросы по тегам