2013-02-05 41 views
1

我的数据库字段获得空值插入

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

我现在用OPENXML做批量插入。它在imagename和imagepath列中插入空值。这是我的存储过程:

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> 

请帮我出;为什么我在插入过程中获得空值?

回答

1

这是由于区分大小写,您imagename,ImagePath的在SQL就是它在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 
+0

我试用了前,后成功输出证实零点。你的语法是完全正确的。 –

+0

哇..它的工作..我永远不会知道它会区分大小写..很多..感谢.. – Darshan

+0

一件事我想问,假设..有2个字段在我的分贝..这是@@ Propertyid和@@ BuilderId ..我传递了两个其他参数,它们是@@ Propertyid和@@ BuilderId作为参数,然后我希望它也可以随它一起插入..如何才能做到这一点..? – Darshan