1

私のデータベースフィールドは

Id which is primary key and auto increment
imagename varchar(max)
imagepath varchar(max)
isdeleted bit

現在、openxmlを使用して一括挿入を行っています。imagename列とimagepath列にnull値を挿入します。これは私のストアドプロシージャです:

alter PROCEDURE PB_Insertgallery   
  @XmlString nText
AS
BEGIN    
    SET NOCOUNT ON;
DECLARE @XMLDocPointer INT  

    EXEC sp_xml_preparedocument @XMLDocPointer OUTPUT, @XmlString     
   INSERT INTO tb_gallery
   (imagename, imagepath)    
   SELECT imagename,imagepath
   FROM OPENXML(@XMLDocPointer,'/NewDataSet/Table1',2)    
    WITH  (imagename VARCHAR(max),  --'@ImageName',     
         imagepath VARCHAR(max)     --'@ImagePath'
          )   
   EXEC sp_xml_removedocument @XMLDocPointer 
END
GO

そして、xml文字列は次のとおりです。

<NewDataSet>
     <Table1>
          <Imagename>Chrysanthemum.jpg</Imagename>
          <Imagepath>/prop_images/temp/Chrysanthemum.jpg</Imagepath>
     </Table1>
</NewDataSet>

私を助けてください; 挿入中にnull値を取得するのはなぜですか?

4

1 に答える 1

1

これは大文字と小文字の区別によるものです。SQLのimagename、imagepathは小文字であり、ntextに大文字が含まれています。

alter PROCEDURE test   
  @XmlString nText,
  @Propertyid Varchar(100),
  @Builderid Varchar(100)
AS
BEGIN    
    SET NOCOUNT ON;
DECLARE @XMLDocPointer INT  

    EXEC sp_xml_preparedocument @XMLDocPointer OUTPUT, @XmlString     
   INSERT INTO tb_gallery
   (Imagename, Imagepath, Propertyid, Builderid)    
   SELECT Imagename,Imagepath, @Propertyid, @Builderid
   FROM OPENXML(@XMLDocPointer,'/NewDataSet/Table1',2)    
    WITH  (Imagename VARCHAR(max),  --'@ImageName',     
         Imagepath VARCHAR(max)     --'@ImagePath'
          )   
   EXEC sp_xml_removedocument @XMLDocPointer 
END
GO
于 2013-02-05T20:06:30.330 に答える