Error while creating dynamic sql to rpelace db prefix but getting error error msg

StackOverflow https://stackoverflow.com/questions/22148586

  •  19-10-2022
  •  | 
  •  

Question

I am having a problem converting strings (in 12\11\2013 format) to Datetime (in 'YYYY-MM-DD' format) in dynamic sql.

You can see the related example and result in the below: declare @dbPrefix varchar(2), @cob varchar(20) , @Sql varchar(200) declare @m_cobMinusOne datetime,

 @m_cobEOM varchar(20),
 @m_cobEOY varchar(20),
 @m_cobFUN varchar(20)
 set @cob = '12/11/2013' 
set @dbPrefix='q_'
set @m_cobMinusOne =  convert(varchar(20),@m_cobMinusOne,103)
set @m_cobEOM =  convert(varchar(20),@m_cobMinusOne,103)

exec(N'select ' + @m_cobMinusOne + '= bdh_prev_bus_d ,' + @m_cobEOM + '= bdh_prev_mo_end_d 
from ' +@dbPrefix+'dbbdm005..bdh_bus_date_ref  where bdh_bus_d = ''' + @cob + '''')

No correct solution

OTHER TIPS

Have a look here you could do something like this ....

declare 
  @dbPrefix      varchar(2),
  @cob           varchar(20) ,
  @m_cobMinusOne datetime, 
  @m_cobEOM      varchar(20),
  @SqlQuery      NVARCHAR(MAX);

set @cob           = '20131211'; 
set @dbPrefix      = 'q_';
set @m_cobMinusOne =  convert(varchar(20),@m_cobMinusOne,103);
set @m_cobEOM      =  convert(varchar(20),@m_cobMinusOne,103);

SET @SqlQuery =  N'select   @m_cobMinusOne = bdh_prev_bus_d ,  @m_cobEOM = bdh_prev_mo_end_d ' +
                 N'from ' + QUOTENAME(@dbPrefix+'dbbdm005') +'..bdh_bus_date_ref  ' +
                 N'where bdh_bus_d = @cob';

EXECUTE sp_executesql @SqlQuery                
                     ,N'@m_cobMinusOne VARCHAR(20) OUTPUT, @m_cobEOM VARCHAR(20) OUTPUT, @cob VARCHAR(20)'
                     ,@m_cobMinusOne OUTPUT
                     ,@m_cobEOM      OUTPUT
                     ,@cob
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top