[MSSQL] Tabela jako argument funkcji/procedury?
jerry - 16-11-2005 21:31
[MSSQL] Tabela jako argument funkcji/procedury?
Witam,
Czy można jako argument funkcji/procedury użyć tabeli? Próbowałem tak, lecz to generuje błąd:
CREATE FUNCTION dbo.fvParseCondition( -- argument prosty @pv_Condition VARCHAR(2000) -- i teraz chcialbym argument jako tabelę: @Tabela TABLE(STR VARCHAR(2000)) ) --w klauzuli RETURNS taka konstrukcja jest dopuszczalna RETURNS @RESULT TABLE( STR VARCHAR(2000) )
AS BEGIN .... END
Jak zadeklarować taki argument jako tabelę, lub jak zamodelować taką sytuację, w której muszę jako jeden z argumentów funkcji przekazać tablicę łańcuchów? pozdrawiam,
Sebastian - 16-11-2005 21:31
> Czy można jako argument funkcji/procedury użyć tabeli?
S tego co wiem to nie ma w MS SQL 2000 czegos takiego jak typ tablicowy
> Jak zadeklarować taki argument jako tabelę, lub jak zamodelować taką > sytuację, w której muszę jako jeden z argumentów funkcji przekazać tablicę > łańcuchów?
Moze warto wykorzystac tabele tymczasowe. W procedurze wywolujacej tworzysz tabele tymczasowa wypelniasz i w wywolanej procedurze odwolujesz sie do tej tabeli.
Sebastian
jerry - 16-11-2005 21:31
> S tego co wiem to nie ma w MS SQL 2000 czegos takiego jak typ tablicowy >
właśnie także wyczytałem to w artykule: http://vyaskn.tripod.com/passing_arr...procedures.htm
> Moze warto wykorzystac tabele tymczasowe. W procedurze wywolujacej tworzysz > tabele tymczasowa wypelniasz i w wywolanej procedurze odwolujesz sie do tej > tabeli.
Takie rozwiązanie byłoby dla mnie bardzo dobre tylko co z widocznością tej tymczasowej tablicy w funkcji wywołanej? Taka sytuacja:
CREATE PROC dbo.Wywolujaca ( @str varchar(500) ) AS BEGIN CREATE TABLE #MyTempTable (cola varchar) ..... end
CREATE PROC dbo.Wywolywana ( @str2 varchar(500) ) AS BEGIN INSERT INTO #MyTempTable (cola) values (@str2) -- czy tu bedzie --widoczna ta tabela??? ..... end
pozdrawiam,
Sebastian - 16-11-2005 21:31
>> Moze warto wykorzystac tabele tymczasowe. W procedurze wywolujacej >> tworzysz tabele tymczasowa wypelniasz i w wywolanej procedurze odwolujesz >> sie do tej tabeli. > > Takie rozwiązanie byłoby dla mnie bardzo dobre tylko co z widocznością tej > tymczasowej tablicy w funkcji wywołanej?
Bedzie widoczna ta tabela
> Taka sytuacja: > > > > CREATE PROC dbo.Wywolujaca > ( > @str varchar(500) > ) > AS > BEGIN > CREATE TABLE #MyTempTable (cola varchar) > .... > end
Chyba zamiast CREATE TABLE #MyTempTable (cola varchar) powinno byc > CREATE TABLE #MyTempTable (cola varchar(500))
Sebastian
jerry - 16-11-2005 21:31
> > Chyba zamiast CREATE TABLE #MyTempTable (cola varchar) powinno byc > CREATE > TABLE #MyTempTable (cola varchar(500))
Tak, pomieszałem dwa przykłady. Znalazłem też wszystko o tabelach tymczasowych w dokumentacji. Dziękuję za odpowiedzi. Pozdrawiam,
Ireneusz Pełka - 17-11-2005 11:21
Użytkownik "Sebastian" napisał
> S tego co wiem to nie ma w MS SQL 2000 czegos takiego jak typ tablicowy
A co powiesz na to:
declare @test table (col1 int not null) insert into @test(col1) values(1) select * from @test
Tyle ze faktycznie nie mozna go uzyc jako typu dla parametrow procedury.
-- Pozdrawiam Irek
Sebastian - 17-11-2005 19:15
>> S tego co wiem to nie ma w MS SQL 2000 czegos takiego jak typ tablicowy > > A co powiesz na to: > > declare @test table (col1 int not null) > insert into @test(col1) values(1) > select * from @test > > Tyle ze faktycznie nie mozna go uzyc jako typu dla parametrow procedury.
No to zle wiem, a w zasadzie zle wiedzialem, bo juz sie dowiedzialem
A czym to sie rozni od tabeli tymczasowej, oprocz zasiegu widocznosci?
Sebastian
Paweł Filipiak - 17-11-2005 19:15
Użytkownik "Sebastian" <sfilinowiczUSUN_TEN_TEKST@magma-net.pl> napisał w wiadomości news:dlhu1t$n3b$1@bandai.magma-net.pl... [...]
> A czym to sie rozni od tabeli tymczasowej, oprocz zasiegu widocznosci? tu masz to opisane http://msdn.microsoft.com/library/en...asp?frame=true
-- pozdrawiam, Paweł Filipiak, gg 2791867
Sebastian - 17-11-2005 19:15
>> A czym to sie rozni od tabeli tymczasowej, oprocz zasiegu widocznosci? > tu masz to opisane > http://msdn.microsoft.com/library/en...asp?frame=true
Dzieki
Sebastian
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
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] 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
[mssql] insert do tabeli na podstawie danych z innej tabeli
zanotowane.pldoc.pisz.plpdf.pisz.pllubiatowo.xlx.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 |
|