Sql server ML=N'')`?因为我已经试过了,结果。。是same@Joe如何调用存储过程?确切地说,从哪里来的?嗨,很抱歉回答晚了。SP是从asp页面调用的,但现在它似乎工作了,实际上它工作了。。但我看不出我改变了什么:-(非常感谢!嗨,srutzky,实际上我没有

Sql server ML=N'')`?因为我已经试过了,结果。。是same@Joe如何调用存储过程?确切地说,从哪里来的?嗨,很抱歉回答晚了。SP是从asp页面调用的,但现在它似乎工作了,实际上它工作了。。但我看不出我改变了什么:-(非常感谢!嗨,srutzky,实际上我没有,sql-server,character-encoding,xml-parsing,utf-16,Sql Server,Character Encoding,Xml Parsing,Utf 16,ML=N'')`?因为我已经试过了,结果。。是same@Joe如何调用存储过程?确切地说,从哪里来的?嗨,很抱歉回答晚了。SP是从asp页面调用的,但现在它似乎工作了,实际上它工作了。。但我看不出我改变了什么:-(非常感谢!嗨,srutzky,实际上我没有声明@XML,现在我修改了存储过程,很抱歉mistake@Joe您仍然缺少输入字符串上的大写字母N前缀。我已更新了我的答案,并对您更新的代码进行了修改,以显示其工作原理。很抱歉,我不明白..我不明白eclare@XML作为变量,但作为输入字段,


ML=N'')`?因为我已经试过了,结果。。是same@Joe如何调用存储过程?确切地说,从哪里来的?嗨,很抱歉回答晚了。SP是从asp页面调用的,但现在它似乎工作了,实际上它工作了。。但我看不出我改变了什么:-(非常感谢!嗨,srutzky,实际上我没有声明@XML,现在我修改了存储过程,很抱歉mistake@Joe您仍然缺少输入字符串上的大写字母
N
前缀。我已更新了我的答案,并对您更新的代码进行了修改,以显示其工作原理。很抱歉,我不明白..我不明白eclare@XML作为变量,但作为输入字段,因此我应该编写“CREATE PROCEDURE dbo.spXML\u ParseSOAP(@XML XML=N”)`因为我已经试过了,但结果是same@Joe存储过程是如何调用的?从何处调用的?您好,很抱歉回答得太晚。SP是从asp页面调用的,但现在它似乎正常工作,实际上正常工作。但我看不到我所做的更改:-(非常感谢!
'<?xml version="1.0"?>
<soapenv:Envelope xmlns:.......>
    <soapenv:Header>
    </soapenv:Header>
    <soapenv:Body>
        <GetResponse>
            <BuyerInfo>
              <Name>Polydoros Stoltidys</Name>
              <Street>Луговой проезд дом 4 корпус 1 квартира 12</Street>
            </BuyerInfo>
        </GetResponse>
    </soapenv:Body>
</soapenv:Envelope>'
 CREATE PROCEDURE dbo.spXML_ParseSOAP
(
    @XML    XML
)
AS
SET NOCOUNT ON;
DECLARE @S nvarchar(max)='',
        @C  nvarchar(max)='',
        @D  nvarchar(max)=''


    SELECT 
        @C= IIF (CHARINDEX('['+T.X.value('local-name(.)', 'nvarchar(100)')+']',@C)=0, CONCAT( ISNULL(@C + ',','') , QUOTENAME(T.X.value('local-name(.)', 'nvarchar(100)'))), @C),
        @D= IIF (CHARINDEX('['+T.X.value('local-name(.)', 'nvarchar(100)')+']',@CP)=0, CONCAT( ISNULL(@D + ',N','') , '''',  T.X.value(N'text()[1]', 'nvarchar(max)'),''''), @D),
    FROM @XML.nodes('//*[count(child::*) = 0]') AS T(X)
    WHERE  T.X.value(N'local-name(.)', 'nvarchar(500)') 
    IN (select name from Customers.sys.columns where [object_id]=@O and is_identity=0)

    SET @S=N'INSERT INTO Sales.dbo.ShippingAddress ('+@C+',ShippingAddressID) VALUES ('+@D+','''+@FADR+''') 

    Print @S
INSERT INTO Sales.dbo.ShippingAddress ([Name],[Street1],ShippingAddressID) 
VALUES 
(N'Polydoros Sample',N'??????? ?????? ??? 4 ?????? 1 ???????? 12','KkQ0LhbhwXfzi+Ko1Ai6s+SDZRT2kYhYC3vM2x2TB5Y=') 
    T.X.value(N'text()[1]', 'nvarchar(max)')
DECLARE @XML XML = N' <!-- remove the N from the left to get all ???? for "Street"-->
            <BuyerInfo>
              <Name>Polydoros Stoltidys</Name>
              <Street>Луговой проезд дом 4 корпус 1 квартира 12</Street>
            </BuyerInfo>
';


DECLARE @S nvarchar(max)='',
        @C  nvarchar(max)='Street',
        @D  nvarchar(max)=''


    SELECT 
        @D= IIF (T.X.value('local-name(.)', 'nvarchar(100)') = N'Street',
                 T.X.value('./text()[1]', 'nvarchar(100)'),
                 @C)
    FROM @XML.nodes('//*[count(child::*) = 0]') AS T(X)

    SET @S=N'INSERT INTO Sales.dbo.ShippingAddress ('
           +  @C+',ShippingAddressID) VALUES (N'''+@D+''',''a'') '

    Print @S;
SELECT 'Луговой проезд'
SELECT N'Луговой проезд'
CREATE PROCEDURE dbo.TestXML(@xml XML)
AS
BEGIN
    SELECT @xml;
END
GO

EXEC dbo.TestXML '<root><Street>Луговой проезд дом 4 корпус 1 квартира 12</Street></root>';
<root>
  <Street>??????? ?????? ??? 4 ?????? 1 ???????? 12</Street>
</root>
EXEC dbo.TestXML N'<root><Street>Луговой проезд дом 4 корпус 1 квартира 12</Street></root>';
<root>
  <Street>Луговой проезд дом 4 корпус 1 квартира 12</Street>
</root>