ďťż
 
SQL EXPRESS - procedura skladowana ďťż
 
SQL EXPRESS - procedura skladowana
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

SQL EXPRESS - procedura skladowana



CYSTERNA - 01-05-2006 00:02
SQL EXPRESS - procedura skladowana
  Mam procedurkę, która dodaje do tabeli firmy 1 wiersz

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER procedure [dbo].[AddFirma]
@IDF numeric(18,0),
@Nazwa nVARCHAR(255)
as
INSERT INTO [DBTEST].[dbo].[Firmy]
([ID_FIRMY],[Nazwa])
VALUES
(@IDF ,@Nazwa)

Problem w tym ze musze przeslać wartośc ID (niepowtarzalna) a chcialbym aby
ta procedurka sprawdzala jaka jest maksymalna wartość w polu ID w tabeli
Firmy i dodawala do niej 1. Jak to zrobic najszybciej?? Teraz mam inna
procedurke ktora zwraca maksymalne ID ale to nie jest chyba najlepsze
rozwiazanie, poniewaz wywoluje jedna procedurkę i mam z niej ID i dopiero
pozniej wywoluje druga procedurke a chcialbym zrobic to w jednej.

Co trzeba dopisac do tej procedurki zeby wrzucic do zmiennej wynik zapytania
(SELECT TOP 1 ID FROM ...Firmy ODRER BY ID DESC). Nie wiem jak to zrobic.

Pozdrawiam





Sirtap - 02-05-2006 00:38

  Użytkownik "CYSTERNA" <e.cysterna@wp.pl> napisał w wiadomości
news:e333lr$nku$1@nemesis.news.tpi.pl...
> Mam procedurkę, która dodaje do tabeli firmy 1 wiersz
>
> set ANSI_NULLS ON
> set QUOTED_IDENTIFIER ON
> go
> ALTER procedure [dbo].[AddFirma]
> @IDF numeric(18,0),
> @Nazwa nVARCHAR(255)
> as
> INSERT INTO [DBTEST].[dbo].[Firmy]
> ([ID_FIRMY],[Nazwa])
> VALUES
> (@IDF ,@Nazwa)
>
> Problem w tym ze musze przeslać wartośc ID (niepowtarzalna) a chcialbym
> aby ta procedurka sprawdzala jaka jest maksymalna wartość w polu ID w
> tabeli Firmy i dodawala do niej 1. Jak to zrobic najszybciej?? Teraz mam
> inna procedurke ktora zwraca maksymalne ID ale to nie jest chyba najlepsze
> rozwiazanie, poniewaz wywoluje jedna procedurkę i mam z niej ID i dopiero
> pozniej wywoluje druga procedurke a chcialbym zrobic to w jednej.
>
> Co trzeba dopisac do tej procedurki zeby wrzucic do zmiennej wynik
> zapytania (SELECT TOP 1 ID FROM ...Firmy ODRER BY ID DESC). Nie wiem jak
> to zrobic.
>
> Pozdrawiam

Może chodzi co o coś takiego:

BEGIN
INSERT INTO KSIAZKI (Tytul_ks, Rok_ks, Opis_ks, Wydawca_ks, Ilosc_str_ks)
VALUES (pTytul, pRok, pOpis, pWydawca, pStrony);

SET varKsId = (SELECT MAX(Id_ks) FROM KSIAZKI);
//...
END;

W Sybase identyfikatory autoincrement nigdy się nie cofają, więc nawet jak
usunie się środkowe wiersze, to nowy id będzie największym.

PS. Dobrze, że zadałeś te pytanie bo... pamiętałem że coś takiego zrobiłem w
swoim projekcie, ale jak chciałem znaleźć ten kod, to okazało się, że na
jego miejscu jest stara funkcja, która nie działała dobrze (nie wiem gdzie
zginął poprawiony kod). Tz. pomogłeś mi znaleźć bug'a ;)

Pozdrawiam
Andrew




Tadeusz Olszewski - 02-05-2006 00:38

 
Użytkownik "CYSTERNA" <e.cysterna@wp.pl> napisał w wiadomości
news:e333lr$nku$1@nemesis.news.tpi.pl...
> Mam procedurkę, która dodaje do tabeli firmy 1 wiersz
>
> set ANSI_NULLS ON
> set QUOTED_IDENTIFIER ON
> go
> ALTER procedure [dbo].[AddFirma]
> @IDF numeric(18,0),
> @Nazwa nVARCHAR(255)
> as
> INSERT INTO [DBTEST].[dbo].[Firmy]
> ([ID_FIRMY],[Nazwa])
> VALUES
> (@IDF ,@Nazwa)
>
> Problem w tym ze musze przeslać wartośc ID (niepowtarzalna) a chcialbym
> aby ta procedurka sprawdzala jaka jest maksymalna wartość w polu ID w
> tabeli Firmy i dodawala do niej 1. Jak to zrobic najszybciej?? Teraz mam
> inna procedurke ktora zwraca maksymalne ID ale to nie jest chyba najlepsze
> rozwiazanie, poniewaz wywoluje jedna procedurkę i mam z niej ID i dopiero
> pozniej wywoluje druga procedurke a chcialbym zrobic to w jednej.
>
> Co trzeba dopisac do tej procedurki zeby wrzucic do zmiennej wynik
> zapytania (SELECT TOP 1 ID FROM ...Firmy ODRER BY ID DESC). Nie wiem jak
> to zrobic.
>
> Pozdrawiam
>

alter procedure [dbo].[AddFirma]
@Nazwa nVARCHAR(255)
as

declare @id_firmy int
set @id_firmy = (SELECT MAX(ID_FIRMY) AS maxID FROM firmy) + 1

INSERT INTO [dbo].[Firmy]
([ID_FIRMY],[Nazwa])
VALUES
(@id_firmy ,@Nazwa)

--
Pozdrawiam
Tadeusz Olszewski




CYSTERNA - 02-05-2006 00:38

 
Użytkownik "Tadeusz Olszewski" <olszewski.tadeusz-usun@wp.usun.pl> napisał w
wiadomości news:e34hpn$g6l$1@atlantis.news.tpi.pl...
>
> alter procedure [dbo].[AddFirma]
> @Nazwa nVARCHAR(255)
> as
>
> declare @id_firmy int
> set @id_firmy = (SELECT MAX(ID_FIRMY) AS maxID FROM firmy) + 1
>
> INSERT INTO [dbo].[Firmy]
> ([ID_FIRMY],[Nazwa])
> VALUES
> (@id_firmy ,@Nazwa)
>
>
> --
> Pozdrawiam
> Tadeusz Olszewski

I o to chodzilo. Bardzo Panu dziekuje.

pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lisinski.htw.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