sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server 2012:dynamisk SQL-begrænsning (> 4000 tegn) (opdelt)

Du behøver ikke at dele teksten op i dele. Du skal sørge for, at trunkering ikke forekommer, mens du er sammenkædende strenge :

Så sørg for, at den første sammenkædning arbejder med en stor værditype (og dermed producerer en stor værditype som resultat), og hver efterfølgende sammenkædning skal gemmes fra trunkering:

set @template=CONVERT(nvarchar(max),'if NOT EXISTS(select * from ' ) + @DestinationDB + ...

(På denne måde behøver du ikke at indsætte konverteringer overalt )

Dette genererer en fejl:

declare @t nvarchar(max)

set @t = 'select LEN(''' + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'

exec sp_executesql @t

Og dette giver resultatet 9000:

declare @t nvarchar(max)

set @t = CONVERT(nvarchar(max),'select LEN(''') + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'

exec sp_executesql @t


  1. Gendan en SQL Server 2000-sikkerhedskopi på SQL Server 2012

  2. Er det muligt at fange den ugyldige værdi i MySQL, når jeg får en fejl med en fremmednøglebegrænsning?

  3. NHibernate-kortlægning for Oracle INTERVAL DAG TIL ANDEN datatype

  4. Indsæt data i en MySQL-database