prueba con esto:
    
Código SQL:
Ver original- SET @QUERY = 'SELECT  
- SUBSTRING(nombre,0, CHARINDEX('+CHAR(39)+ CHAR(44)+CHAR(39)+',nombre)), 
- SUBSTRING(NOMBRE ,CHARINDEX('+CHAR(39)+CHAR(47)+CHAR(39)+',NOMBRE )+1,LEN(nombre)), 
- SUBSTRING(nombre,CHARINDEX(' +CHAR(39)+CHAR(44)+CHAR(39)+',nombre)+1,((LEN(NOMBRE))-(LEN(SUBSTRING(NOMBRE ,CHARINDEX('+CHAR(39)+CHAR(47)+CHAR(39)+', NOMBRE)+1,LEN(NOMBRE))))-(LEN(SUBSTRING(NOMBRE ,0, CHARINDEX('+CHAR(39)+CHAR(44)+CHAR(39)+',NOMBRE ))) )-2) ), 
- GB.RFCH, 
- GB.TRACVE, 
- PRD.PRGSUB, 
- PRD.UNIRES, 
- PRD.PARTID,  
- PRD.CODIGO, 
- PRD.HORAS, 
- PRD.NUMPTO, 
- (TRAIMP), 
- TRATIP, 
- replace(GB.TRADAT ,0 ,'''') as DATITO, 
- GB.CENRES      
- FROM '+@GBL+' GB INNER JOIN '+@AÑOQUIN+' PRD ON GB.RFCH = PRD.RFCH 
-  WHERE  GB.QNAPROC ='+@QUINCENA+' 
- AND GB.IDDESNOM >=11 AND GB.IDDESNOM <= 13' 
Como recomendacion al usar queries dinamicos recuerda que las sentencias que llevan ' se sustituyen por '' para que te aparezca la ' dentro de tu cadena si no lo haces lo tomara como un escape de cadean ;)