为什么SQL函数总是返回空结果集?

开树

以下function我写了接受xml并返回table结果。

CREATE FUNCTION FunctionTest(@ID INT,@XML_Details xml)
RETURNS @RESULT TABLE
(
    Value1 INT,
    Value2 INT
)
AS
BEGIN
    DECLARE @tbl_Xml_Result Table
    (
        Value1 INT,
        Value2 INT
    )

    INSERT INTO @RESULT(Value1,Value2)
    SELECT 
        l.v.value('Value2[1]','INT'),
        l.v.value('Value1[1]','INT')
    FROM @XML_Details.nodes('/Listings/listing')l(v)
    RETURN
END

以下是我用来对付上面的代码,function但它总是返回Empty结果。

DECLARE @tbl_Xml_Result Table
(
        Value1 INT,
        Value2 INT
)
INSERT INTO @tbl_xml_Result
values(1,2),(2,3),(3,4),(4,5),(5,6)


DECLARE @xml_Temp xml

SET @xml_Temp = (   SELECT * 
                    FROM @tbl_xml_Result
                    FOR XML PATH('Listing'),ROOT('Listings')
                )

DELETE FROM @tbl_xml_Result
INSERT INTO @tbl_xml_Result(Value1,Value2)
Select 
    T.Value1,
    T.Value2
FROM FunctionTest(1,@xml_Temp) T

select * from @tbl_Xml_Result
卢卡斯·索兹达(Lukasz Szozda)

首先,尽可能避免使用多行功能。内联UDF具有更好的性能

第二XQuery是区分大小写,您没有'/Listings/listing'路径。

第三:您可能想使用过滤@ID

CREATE FUNCTION FunctionTest(@ID INT,@XML_Details xml)
RETURNS  TABLE
AS
RETURN(
    SELECT Value1, Value2
    FROM (SELECT  
            l.v.value('(Value2)[1]','INT') AS Value2,
            l.v.value('(Value1)[1]','INT') AS Value1
          FROM @XML_Details.nodes('/Listings/Listing')l(v)) AS sub
    WHERE Value1 = @ID
    )
GO

DECLARE @tbl_Xml_Result Table(Value1 INT,Value2 INT);
INSERT INTO @tbl_xml_Result(Value1, Value2)
values(1,2),(2,3),(3,4),(4,5),(5,6);

DECLARE @xml_Temp xml  = (SELECT * 
                          FROM @tbl_xml_Result
                          FOR XML PATH('Listing'),ROOT('Listings'));

SELECT T.Value1,
       T.Value2
FROM FunctionTest(1,@xml_Temp) T;

LiveDemo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么SQL函数总是返回空结果集?

来自分类Dev

为什么我的mysql查询总是返回空结果?

来自分类Dev

为什么dataTable.Select总是返回空结果?

来自分类Dev

为什么返回结果的函数总是返回Err?

来自分类Dev

SQL COMMAND返回空结果集的地址

来自分类Dev

为什么Instagram API返回空结果?

来自分类Dev

为什么bcrypt总是返回不同的结果?

来自分类Dev

为什么tensorflow.rank总是返回空值的形状

来自分类Dev

为什么异步Task <TResult>总是返回空值

来自分类Dev

为什么“if”函数总是输出相同的结果

来自分类Dev

XMLTABLE 返回空结果集后的聚合函数

来自分类Dev

为什么此函数总是返回0

来自分类Dev

为什么此函数总是返回零?

来自分类Dev

为什么这个函数总是返回 0

来自分类Dev

为什么Like返回空值,而=返回结果?

来自分类Dev

为什么 SQL 内连接在 Laravel 中返回空结果?

来自分类Dev

如何返回空结果集

来自分类Dev

MySQL返回空结果集

来自分类Dev

PL / SQL表功能-如何返回空结果集?

来自分类Dev

根据SQL Server中变量的值返回空结果集

来自分类Dev

SSIS执行SQL任务存储过程返回空结果集

来自分类Dev

我的SQL返回空结果集,怎么办?

来自分类Dev

为什么在函数内部调用的函数返回空值?

来自分类Dev

为什么此范围查询返回空结果?

来自分类Dev

QML 函数总是返回空白

来自分类Dev

为什么这个函数可能返回空值?

来自分类Dev

为什么从java脚本函数返回空字典

来自分类Dev

为什么函数会提前返回结果?

来自分类Dev

为什么我的函数总是返回相同的值?