ďťż
 
odpowiednik SUSPEND z firebird w MSSQL ďťż
 
odpowiednik SUSPEND z firebird w MSSQL
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

odpowiednik SUSPEND z firebird w MSSQL



Sowiecki Agent - 11-05-2007 12:31
odpowiednik SUSPEND z firebird w MSSQL
  Witam!
Utworzylem kursorw procedurze, i przechodzac po kolei przez rekordy
danego zapytania,
jezlei spelnia warunek zostaja wrzucone do wynikowego zestawu procedury.
W Firebird w takim przypadku wystarczylo dopisac polecenie SUSPEND,
jak to wyglada w mssql?

Powiedzmy ze mam taki kod:

set nocount on;

DECLARE petelka CURSOR

for select id from jakas tam tabela

OPEN petelka
FETCH NEXT FROM petelka INTO @v_id
WHILE @@FETCH_STATUS = 0

begin

//tu pokolei z roznych tablic wyniki pobieram i przetwarzam
//w koncu wynik laduje w zmiennej @zmienna
//i teraz jezeli @zmienna > 0 to ma dodac @v_id do wynikowego zestawu
//danych, jak to zrobic?

FETCH NEXT FROM petelka INTO @v_id
end
CLOSE petelka
DEALLOCATE petelka

set nocount off;

end
GO

--
http://www.niesfornazyta.pl/
Pierwszy stacjonarny czytnik for typu phpBB/phpBBbyPrzemo (windows/linux)
Od dziś możesz korzystać z fora tak jak z usenetu !





Sowiecki Agent - 11-05-2007 12:31

  zdaje sie ze osiagne to zameinaijac procedure na funkcje;

--
http://www.niesfornazyta.pl/
Pierwszy stacjonarny czytnik for typu phpBB/phpBBbyPrzemo (windows/linux)
Od dziś możesz korzystać z fora tak jak z usenetu !




Gsue - 11-05-2007 12:31

 
Użytkownik "Sowiecki Agent"
<przemyslaw.rokicki.tnij@tnijtnijkochanietnij.gaze ta.pl> napisał w
wiadomości news:evvsmn$7nv$1@inews.gazeta.pl...
> zdaje sie ze osiagne to zameinaijac procedure na funkcje;
>
>
>
> --
> http://www.niesfornazyta.pl/
> Pierwszy stacjonarny czytnik for typu phpBB/phpBBbyPrzemo (windows/linux)
> Od dziś możesz korzystać z fora tak jak z usenetu !

Witam,
masz 'słuszną' rację. Wykorzystaj table returning function.

Pozdrawiam
Gsue




wloochacz - 11-05-2007 12:31

  [ciach]
> Witam,
> masz 'słuszną' rację. Wykorzystaj table returning function.
Można, ale nie trzeba (a czasem się NIE DA; próbuj wykorzystać getdate()
w funkcji MSSQL). Się można zdziwić, ale w MSSQL to się po prostu select
robi i już dane są "na zewnątrz: ;-)

<sql>
declare @tab table(zmienna int)

DECLARE petelka CURSOR
for select id from jakas tam tabela

OPEN petelka
FETCH NEXT FROM petelka INTO @v_id
WHILE @@FETCH_STATUS = 0

begin
//tu pokolei z roznych tablic wyniki pobieram i przetwarzam
//w koncu wynik laduje w zmiennej @zmienna
//i teraz jezeli @zmienna > 0 to ma dodac @v_id do wynikowego zestawu
//danych, jak to zrobic?
if @zmienna > 0
insert into @tab(zmienna) values(@zmienna)

FETCH NEXT FROM petelka INTO @v_id
end
CLOSE petelka
DEALLOCATE petelka

select * from @tab

</sql>

--
wloochacz





Sowiecki Agent - 11-05-2007 12:31

  wloochacz napisał(a):
> [ciach]
>> Witam,
>> masz 'słuszną' rację. Wykorzystaj table returning function.
> Można, ale nie trzeba (a czasem się NIE DA; próbuj wykorzystać getdate()
> w funkcji MSSQL). Się można zdziwić, ale w MSSQL to się po prostu select
> robi i już dane są "na zewnątrz: ;-)
>
> <sql>
> declare @tab table(zmienna int)
>
> DECLARE petelka CURSOR
> for select id from jakas tam tabela
>
> OPEN petelka
> FETCH NEXT FROM petelka INTO @v_id
> WHILE @@FETCH_STATUS = 0
>
> begin
> //tu pokolei z roznych tablic wyniki pobieram i przetwarzam
> //w koncu wynik laduje w zmiennej @zmienna
> //i teraz jezeli @zmienna > 0 to ma dodac @v_id do wynikowego zestawu
> //danych, jak to zrobic?
> if @zmienna > 0
> insert into @tab(zmienna) values(@zmienna)
>
> FETCH NEXT FROM petelka INTO @v_id
> end
> CLOSE petelka
> DEALLOCATE petelka
>
> select * from @tab
>
> </sql>

heh, dzieki, wws.pl tez napisal gosc ze funkcje odroznia to ze moze
zwracaczestawy danych. Tak czy siak zrobilem juz funkcje wczoraj i
dziala, ale rzeczywiscie problem si epojawi gdy bede musial wywyolywac
funkcje typu getdate z tejze funkcji.
A czy mozna wywolywac z poziomu UDF-a procedure napisana wczesniej ?
UDF ma to dobre ze mozna wybierac z niej dane w zwyklym zpytaniu select
(tak jak procedury w firebird).

P.

--
http://www.niesfornazyta.pl/
Pierwszy stacjonarny czytnik for typu phpBB/phpBBbyPrzemo (windows/linux)
Od dziś możesz korzystać z fora tak jak z usenetu !




wloochacz - 11-05-2007 12:31

  [ciach]
> heh, dzieki, wws.pl tez napisal gosc ze funkcje odroznia to ze moze
> zwracaczestawy danych.
Się nie znają :P

> Tak czy siak zrobilem juz funkcje wczoraj i
> dziala, ale rzeczywiscie problem si epojawi gdy bede musial wywyolywac
> funkcje typu getdate z tejze funkcji.
No więc właśnie... poczytaj sobie o ograniczeniach UDF w BoL; a funkcje
typu getdate, są to funkcje, które zwracają dane niedeterministyczne -
takie kretyńskie ogranicznie MSSQL...
Ale... można to obejść (przyznaję się, dowiedziałem się o tym niedawno
;-). trzeba sobie zdefiniować widok i używć widoku w UDF zamiast
funkcji; np. tak:

CREATE VIEW get_date
AS
SELECT getdate() as GET_DATE
GO

CREATE FUNCTION dbo.udf_get_date()
RETURNS datetime
AS
begin
return (select A.GET_DATE from get_date A)
end
GO

> A czy mozna wywolywac z poziomu UDF-a procedure napisana wczesniej ?
> UDF ma to dobre ze mozna wybierac z niej dane w zwyklym zpytaniu select
> (tak jak procedury w firebird).
Dokładnie; MSSQLowe UDF to taki sparametryzowany widok, można by
powiedzieć... Działa wszystko co w select, a więc where, join, itd.

--
wloochacz




Gsue - 11-05-2007 12:31

 
Użytkownik "wloochacz" <wl@no.spam> napisał w wiadomości
news:f028a4$8pn$1@atlantis.news.tpi.pl...
> [ciach]
>> heh, dzieki, wws.pl tez napisal gosc ze funkcje odroznia to ze moze
>> zwracaczestawy danych.
> Się nie znają :P
> <CIACH>
Masz rację. Słuszną :(

Pozdrawiam,
zasmucony, że nie powiedział całej prawdy

Gsue
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= [MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?= MSSQL Express czy Oracle Express MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= [MSSQL 2000] =?ISO-8859-2?Q?wywo=B3anie_procesu_z_poziomu_?==?ISO-8859-2?Q?job=27a?= [MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?= Pobierananie danych z innej bazy danych w MSSQL Migracja MSSQL 2005 CTP na 2005 Express
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • red-hacjenda.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com