2010-08-28 10 views
0

Cette fonction table compile ok,SQL 2005 - fonction table compile ok mais lance une syntaxe incorrecte près .. quand elle est sélectionnée

alter function [dbo].[ftsls031nnnHades](@withExpiredEntries smallint) returns 
@t table(comno  varchar(3), 
     t$cuno  varchar(6), 
     t$cpgs  varchar(6), 
     t$dile  float, 
     t$qanp  float, 
     t$stdt  varchar(10), 
     t$tdat  varchar(10), 
     t$disc  float, 
     t$damt  float, 
     t$cdis  char(3), 
     t$gnpr  float, 
     t$refcntd float, 
     t$refcntu float) as 
------------------------------------------------------*/ 
/*------------------------------------------------------- 
declare @withExpiredEntries bit; set @withExpiredEntries =0 
declare @t table(comno  varchar(3), 
     t$cuno  varchar(6), 
     t$cpgs  varchar(6), 
     t$dile  float, 
     t$qanp  float, 
     t$stdt  varchar(10), 
     t$tdat  varchar(10), 
     t$disc  float, 
     t$damt  float, 
     t$cdis  char(3), 
     t$gnpr  float, 
     t$refcntd float, 
     t$refcntu float) 
------------------------------------------------------*/ 
Begin 
set quoted_identifier off 
if (@withExpiredEntries = 0) -- without expired entries 
    Begin 
     insert @t 
     select * 
     from openQuery(Hades ,"select '010' comno, trim(t$cuno) t$cuno,trim(t$cpgs) t$cpgs,t$dile,t$qanp,to_char(t$stdt,'dd Mon yy') t$stdt,to_char(t$tdat,'dd Mon yy') t$tdat,to_char(t$disc,'999.99') t$disc,t$damt,t$cdis,t$gnpr,t$refcntd,t$refcntu from baan.ttdsls031010 where (to_char(t$Tdat,'yyyy-mm-dd') >= To_char(current_date,'yyyy-mm-dd')) and (to_char(t$stdt,'yyyy-mm-dd') <= To_char(current_date,'yyyy-mm-dd')) 
       union all  select '020' comno, trim(t$cuno) t$cuno,trim(t$cpgs) t$cpgs,t$dile,t$qanp,to_char(t$stdt,'dd Mon yy') t$stdt,to_char(t$tdat,'dd Mon yy') t$tdat,to_char(t$disc,'999.99') t$disc,t$damt,t$cdis,t$gnpr,t$refcntd,t$refcntu from baan.ttdsls031020 where (to_char(t$tdAt,'yyyy-mm-dd') >= To_char(current_date,'yyyy-mm-dd')) and (to_char(t$stdt,'yyyy-mm-dd') <= To_char(current_date,'yyyy-mm-dd'))") 
    return 
End 
    insert @t 
    select * 
     from openQuery(Hades ,"select '010' comno, trim(t$cuno) t$cuno,trim(t$cpgs) t$cpgs,t$dile,t$qanp,to_char(t$stdt,'dd Mon yy') t$stdt,to_char(t$tdat,'dd Mon yy') t$tdat,to_char(t$disc,'999.99') t$disc,t$damt,t$cdis,t$gnpr,t$refcntd,t$refcntu from baan.ttdsls031010 
       union all  select '020' comno, trim(t$cuno) t$cuno,trim(t$cpgs) t$cpgs,t$dile,t$qanp,to_char(t$stdt,'dd Mon yy') t$stdt,to_char(t$tdat,'dd Mon yy') t$tdat,to_char(t$disc,'999.99') t$disc,t$damt,t$cdis,t$gnpr,t$refcntd,t$refcntu from baan.ttdsls031020 ") 
    return 
end 

il jette cette erreur lors de la sélection

Msg 102, Niveau 15, State 1, Line 1 Syntaxe incorrecte près de 'select' 010 'comno, trim (t $ cuno) t $ cuno, trim (t $ cpgs) t $ cpgs, t $ dile, t $ qanp, to_char (t $ stdt, 'jj Mon yy') t $ stdt, to_char (t $ tdat, 'dd'.

Répondre

1

Modifier le guillemet entre guillemets simples et voir ce qui se passe ...

... 
..Hades ,'select '010' comno... 
... 

Vous devrez également doubler les singles contenus aussi.

Lorsque SET QUOTED_IDENTIFIER est activée, "un nom de délimite objet/colonne etc. Pas une chaîne Ceci est le réglage par défaut trop

Le SET QUOTED_IDENTIFIER OFF has no meaning at runtime:.. Il est mis à l'heure CREATE/... c'est ALTER pourquoi CREATE <> compiler en passant ... il est compilé à un plan au moment de l'exécution

+0

Merci pour la clarification sur Quoted_identifer .. J'ai modifié l'instruction select pour retourner single et les guillemets les uns avec les autres .. mais toujours les mêmes .. – TonyP

+0

TonyP: Je veux dire double up c'est '' pas '' – gbn

Questions connexes