Michał Śliwicki

Michał Śliwicki VB.NET/T-SQL/CR,
wdrożenieniowiec
systemów ERP

Temat: Wywoływanie procedury

Witam,
stworzyłem sobie procedurę, która robi mi obliczenia. Chciałbym ją wywołać w klauzuli SELECT, wiem że opcja exec nie zadziała. Stworzyłem więc funkcję aby móc ją wywołać z poziomu SELECT. Pojawił się jednak problem ponieważ w funkcjach nie można wywoływać procedur przy pomocy exec. Czy jest na to jakieś obejście?

konto usunięte

Temat: Wywoływanie procedury

chodzi o takie coś?
http://stackoverflow.com/questions/11182685/using-udf-...
Michał Śliwicki

Michał Śliwicki VB.NET/T-SQL/CR,
wdrożenieniowiec
systemów ERP

Temat: Wywoływanie procedury

Nie do końca o to mi chodziło, poniżej moja funkcja

CREATE FUNCTION [CDN].[HB_Nadg] (@Pracownik INT)
RETURNS DECIMAL(15,2)
AS
BEGIN
declare @wynik decimal(15,2)
declare @temp table (nadgodziny decimal(15,2))

insert @temp
exec CDN.HB_Nadgodziny @Pracownik

set @wynik = (select nadgodziny from @temp)
Return @wynik

END
przy wywołaniu Execute SQL zgłasza błąd (dotyczy on lini z insert-em)
Invalid use of a side-effecting operator 'INSERT EXEC' within a function

konto usunięte

Temat: Wywoływanie procedury

tego nie zrobisz w funkcji
http://stackoverflow.com/questions/18389503/invalid-us...

zrób to kursorem
select *
into #tabelkaTmp
from twoje dane

kursor na #tabelkaTmp
iteruj po wierszu i pobierz dane z tej procedury
update #tabelkaTmp set pole = @wynik where id = id;
next

select * from #tabelkaTmp

pi razy oko tak to by szło
Marek Węgierski

Marek Węgierski Programista,
Accenture Sp. z o.o.

Temat: Wywoływanie procedury

Jaka baza danych?

Temat: Wywoływanie procedury

Patrząc po składni - SQL Server.



Wyślij zaproszenie do