ďťż
 
[MSSQL] Tabela jako argument funkcji/procedury? ďťż
 
[MSSQL] Tabela jako argument funkcji/procedury?
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

[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.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] 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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lubiatowo.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com