J'ai une table Employee
avec les colonnes Id(bigint)
et DocumentContent(varbinary(MAX))
dans SQL.Valeur nulle stockée lors de l'extraction de données binaires
Maintenant, lorsque j'essaie d'insérer des enregistrements dans la table Employee
en utilisant XML, la valeur Null
est stockée dans la table pour les fichiers dont la taille est inférieure à 1Kb
. Lorsque la taille du fichier est supérieure à 1Kb
, il est converti en données binaires et stocké dans la base de données.
Mon XML généré est la suivante:
<MyDocuments>
<Rows>
<Id>62</Id>
<Document_Content>104116116112584747495550464954464846495856485748471041161161129910810510111011646104116109108</Document_Content>
</Rows>
</MyDocuments>
et procédure stockée est
CREATE Procedure [dbo].[Proc_SaveDocuments]
(
@XMLData as XML
)
AS
BEGIN
Declare @propertyCount Varchar(100) = '',@currentCount int=1,@Id bigint,@Content varbinary(MAX)
SELECT @propertyCount = convert(VARCHAR, @XMLData.query ('count(/MyDocuments/Rows)'))
SET @currentCount = 1
WHILE (@currentCount<[email protected])
BEGIN
SET @Id = @XMLData.value('data(/MyDocuments/Rows[sql:variable("@currentCount")]/Id)[1]', 'BIGINT')
SET @Content = @XMLData.value('data(/MyDocuments/Rows[sql:variable("@currentCount")]/Document_Content)[1]', 'VARBINARY(MAX)')
insert into Employee values(@Id,@Content) --inserts null in DocumentContent column when file size less than 1Kb, else converts it to binary and saves it in database.
SET @currentCount = @currentCount + 1
END
END
Toutes les idées pourquoi est-ce qui se passe et comment cela peut-il être résolu?
Combien de dans les fichiers 1k qui sont NULL Insertion? –
tale852150
@ tale852150: Il peut être n'importe quel nombre de lignes, 1 ou plus de 1 .. –