我已从 https://stackoverflow.com/a/9714484/1678652获取此功能
SET @XML = N'<root><r>' + REPLACE(@s, @sep, '</r><r>') + '</r></root>'
INSERT INTO @result(Id)
SELECT DISTINCT r.value('.','int') as Item
FROM @xml.nodes('//root//r') AS RECORDS(r)
它接受一个字符串并拆分成一个表格,每行都有一个元素。当我在 SSMS 中测试它时它可以工作,但是当我从 websserver (php/pdo) 调用它时,它返回一个空的结果集。
我认为它必须是具有 XML 权限的东西,因为如果我让函数将硬编码结果添加到表中,我确实会将结果返回给 php.ini。
如果我将参数硬编码到函数中,我不会得到 php 的结果,我可以更改函数以仅返回参数,因此这不是输入问题。
我想知道这是否相关:
http://beingoyen.blogspot.dk/2009/06/tsql-error-execute-permission-denied-on.html
解决方案很简单: GRANT EXECUTE ON XML SCHEMA COLLECTION::{XMLSchema1} TO {RestrictedLoginName}
但是这个 XML Schema 集合会被称为什么?在 SSMS 中,我可以浏览 XML Schema 集合类型的对象以向用户添加权限,但没有这种类型的对象。
我已将该功能的所有权限授予用户。