Jeg har lavet denne funktion:
CREATE FUNCTION [dbo].SplitToInt
(
@sep VARCHAR(32),
@s VARCHAR(MAX)
)
RETURNS
@result TABLE (
Id INT NULL
)
AS
BEGIN
DECLARE @xml XML
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)
RETURN
END
Taget fra
http://stackoverflow.com/a/9714484/1678652
Den kaldes f.ex. som select * from dbo.SplitToInt(' ','1 2 4')
Den fungerer i SSMS og returnerer en tabel med rᅵkkerne 1,2 og 4.
Men kalder jeg den fra php->pdo, fᅵr jeg et tomt svar, ingen
fejlmeddelelser.
Funktionen bliver kaldt: prᅵver jeg med et forkert funktionsnavn fᅵs
fejl.
Den fᅵr de rigtige parametre: hardcoder jeg dem i funktionen,
returneres stadig intet, men det hardcodede svar returneres i SSMS.
Bruger jeg ikke XML, men hardcodet resultat, returneres det i php:
INSERT INTO @result(Id)
-- SELECT DISTINCT r.value('.','int') as Item
-- FROM @xml.nodes('//root//r') AS RECORDS(r)
SELECT 42
RETURN
Skriver php nok sᅵ fint:
Array
(
[0] => Array
(
[val] => 42
)
)
Mangler php-brugeren nogle rettigheder? Der er fulde rettigheder til
funktionen.
Kan det have noget med dette at gᅵre?
http://beingoyen.blogspot.dk/2009/06/tsql-error-execute-permission-denied-on.html
Solution was simple:
GRANT EXECUTE ON XML SCHEMA COLLECTION::{XMLSchema1} TO
{RestrictedLoginName}
Men jeg har ikke nogen schema'er; i SSMS kan jeg tildele rettigheder
til brugeren, og sᅵge efter objecter af typen "XML Schema collections",
men der er ikke nogen.
Jeg er forvirret...
Leif
--
Husk kᅵrelys bagpᅵ, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.