Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 对于使用SQL存储过程或函数的简单查询,需要一个alernative to While循环_Sql Server_While Loop_Functional Programming_Nested Loops_Table Valued Parameters - Fatal编程技术网

Sql server 对于使用SQL存储过程或函数的简单查询,需要一个alernative to While循环

Sql server 对于使用SQL存储过程或函数的简单查询,需要一个alernative to While循环,sql-server,while-loop,functional-programming,nested-loops,table-valued-parameters,Sql Server,While Loop,Functional Programming,Nested Loops,Table Valued Parameters,我有一个简单的父/子记录集,当前我循环使用该记录集,并在客户端上显示代码,出于性能原因,我希望将其移动到某个过程 这在classic.asp网页中用于创建动态html表 当前逻辑使用嵌套的do而不是EOF来在我遍历主记录集时将子记录拉入并连接到一个列中 主记录集根据存储过程:伪代码提取父资产数据 RS1 从AssetID=AssetID的资产中选择AssetID、字段1、字段2、字段3 当我显示这个输出时,我调用这个循环,向原始结果集中添加一列,其中包含一个proc中的串联值,并显示行的Asse

我有一个简单的父/子记录集,当前我循环使用该记录集,并在客户端上显示代码,出于性能原因,我希望将其移动到某个过程

这在classic.asp网页中用于创建动态html表

当前逻辑使用嵌套的do而不是EOF来在我遍历主记录集时将子记录拉入并连接到一个列中

主记录集根据存储过程:伪代码提取父资产数据 RS1 从AssetID=AssetID的资产中选择AssetID、字段1、字段2、字段3

当我显示这个输出时,我调用这个循环,向原始结果集中添加一列,其中包含一个proc中的串联值,并显示行的AssetID参数

While not rs1.eof
      sSQL = "EXEC GetAuditDescriptions @AssetID ='" & RS1("AssetID")& "'"
            set AuditRs = conn.execute(sSQL)    
        if not auditRS.EOF then
                auditRS.MoveFirst
                while not(auditRS.EOF)
                    auditDescrs = auditDescrs & auditRS.Fields("audit_text").Value & ", "
                    auditRS.MoveNext                    
                wend                
            end if
            auditRS.Close
这将创建一个列,其中包含GetAuditDescriptions中单个字段的串联输出

最终输出为

AssetID, Field1,Field2,Field3,[auditDescrs1, auditDescrs2, auditDescrs3]
现在这种情况发生在客户机上,但是我想创建一个函数,从我的主过程中调用它,以在后端的原始查询中作为列返回这个连接的输出

我听说存储过程中的循环不是一个好主意,我想知道是否可以创建一个基于表的函数,从我的过程中调用以提取这些值,但我需要它们作为每行的串联返回,作为一个单行


任何帮助都将不胜感激。

我更喜欢XML路径-。这非常感谢。我基于这个解决方案创建了一个基于表的函数,并得到了我所需要的。现在,我尝试从主过程中调用此函数,以添加一个包含串联结果的列。该函数需要一个参数@assetID,但我使用functionaudit.assetID as NewColumn中的select field1作为文本调用它-其中audit.assetID是我进程中的select字段。Intellisense显示没有问题,但proc不会编译。如果我定义@assetID参数和语法newfunction@assetID它编译。但这也不好。有什么想法吗?