Страницы

24 января 2014 г.

MS SQL Server. Varbinary в динамическом SQL

Тип varbinary не вариант передать как простой тип, его надо преобразовывать специальной функцией.

Собираем динамический запрос:


SELECT 

'INSERT INTO [dbo].[setting]
           ([idsetting]
           ,[name]
           ,[intvalue]
           ,[comment]
           ,[deleted]
           ,[txtvalue]
           ,[blbvalue]
           ,[groupname]
           ,[idsettinggroup]
           ,[namecrypt]
           ,[dtvalue]
           ,[guid]
           ,[addorder]
           ,[addmodel]
           ,[strvalue]
           ,[intvalue2]
           ,[strvaluecrypt]
           ,[txtvaluecrypt]
           ,[commentcrypt]
           ,[customtable])
     VALUES
           (96
           ,'''+name+'''
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,9
           ,NULL
           ,NULL
           ,'''+CAST([guid] AS VARCHAR(MAX))+'''
           ,0
           ,0
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,'+master.dbo.fn_varbintohexstr(customtable)+');
     '
  FROM [dbo].[setting]
WHERE idsetting = 96

В результате получается запрос вида:

INSERT INTO [dbo].[setting]
           ([idsetting]
           ,[name]
           ,[intvalue]
           ,[comment]
           ,[deleted]
           ,[txtvalue]
           ,[blbvalue]
           ,[groupname]
           ,[idsettinggroup]
           ,[namecrypt]
           ,[dtvalue]
           ,[guid]
           ,[addorder]
           ,[addmodel]
           ,[strvalue]
           ,[intvalue2]
           ,[strvaluecrypt]
           ,[txtvaluecrypt]
           ,[commentcrypt]
           ,[customtable])
     VALUES
           (96
           ,'Соответствия идентификаторов'
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,9
           ,NULL
           ,NULL
           ,'7368CA2C-A9A6-4EE8-84F4-CE21CA0A6409'
           ,0
           ,0
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,NULL
           ,0x504b030414000900080093863244c03751987a02000093130000090000004d6f64656c2e786d6c3722b8824917fb0d8976f2b8a758d216545538760de70a0a50cbcee84abfe47ef1c1fdedf6000fcafba57f8902df3797b9898ad14043f2a401b57e703bbc8a99fb35b30caf9f95627917a486fc5de126641ff31195538af04e8ffcad9eea22a261e8f196641f29e64ded9b15476097b94e03b32fadb35f8c02b11d1b97fd0677ac50da8fcd4c427cafad6b07a1ee0e6128ae4b982f68553c7cc3eeea90aecd04f1561cb41a3586971ec6c58fcef79ff5719aafaac7a77dd93f179a7309f5e8e11bebc0a5fedbaeedc2dbdbbaad0e08a1296405779c14fd11ca71c4a64750dff3ad7bc609712ff991fd750c5f5d4ef39236a0f1a294ae320bac5efa99aa1b695d1099de8eb00c95f0ce351cb841f41627267561dd0cdc8377bfe68402ff414a0f24db70c9e2eeeae3beadef0141d143ccb0ecc49c18d9bfe1fabf87f993cc4c8f18f551baf930aca1b4736b26dd5a0173f8427d0eec89f6ec5b46642bb3175d28390e9a55c41a5918b7c17272ce4c1b66bb717fce3bcf7dc5fa117c13934c6333131ecda0df3ca9174961f5b32c9e83c09d007428b0e94cd721a727dd47e3cd641bba5ec44b6a4e84f814de26ef437be37245ccfdcc35cbaa89553c129c392cb8d33e57bf42b8783c7ff68aef1f55871446bb16226d6d07a4ba64011c26d9e9cc796e91faca776906d28361b744aba75a68662ebadc4c465575b0b8548408d09d026897b1920bdf0b87585f661f1b546e3ec7dcfed94126c9fc12d158fd71c36f192e5bb248768608ad9e4ecd34cf44bfa19408ac7b9c256868c2c115753c4cc262b555448231cdd4d0049d87e64d83dde5c5faa3fe3e186e1a7260a961cf665629eab188e593a2c09a4f34b21ad0b4c0be5253a022c3611b26b8504b0708c03751987a02000093130000504b01022d0014000900080093863244c03751987a020000931300000900000000000000000000000000000000004d6f64656c2e786d6c504b0506000000000100010037000000b10200000000);


Запрос нормально выполнился, объект который был сериализован в это поле работает корректно.

Функция преобразования: master.dbo.fn_varbintohexstr(...)


Комментариев нет:

Отправить комментарий