Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> liczba rekordow w tabeli
nameless
post
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.12.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


chce napisac funkcje ktora jako argument przyjmuje nazwe table a zwraca liczbe rekordow ktore zawiera
ma ktos pojecie jak to zrobic?


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


W tresci funkcji generujesz zapytanie typu SELECT COUNT(*) FROM [tabela], gdzie tabela jest brana z tej zmiennej i wysylasz to zapytanie do bazy.

PS. uspokoj sie z tymi tematami, w ciagu ostatnich godzin zalozyles tutaj juz 6 tematow, jesli masz tyle problemow to opisz je w jednym zbiorczym temacie.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
nameless
post
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.12.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


w funkcji nie moge uzyc sp_executesql

ps. pisze duzo postow bo mam konkretne tematy
dzieki za odpowiedz na jeden ale reszta zostaje dalej bez odpowiedzi
a nie sa to pytania typu co mi nie dziala w joinie albo czmu mi sie mnoza rekordy tylko badziej zaawansowane sprawy, ktore naprawde trzeba przymyslec

Ten post edytował nameless 31.08.2005, 11:14:52


--------------------
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


Racja ten post naprawde byl zaawansowany. Przeciez @FiDO podac Ci jakie ma byc zapytanie, a jak napisac funkcje to w kazdym manualu do MSSQLa znajdziesz, no chyba ze chesz to napisac w php to jeszcze prosciej. Radze wczesniej szukac a nie pytac sie i czekac az ktos Ci gotowca napisze, no chyba ze "Praca oferowana"


--------------------
Go to the top of the page
+Quote Post
nameless
post
Post #5





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.12.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


widze ze to forum nie jest duzo warte
nie chodzi ni o funkcje w php tylko t-sql
w funkcji w t-sqlu nie moge uzyc sp_execute sql wiec jak mam wywolac
select count(*) from @Tabela ?
przecierz tak sie nie da


--------------------
Go to the top of the page
+Quote Post
SongoQ
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


Może mnie nie zrozumiałeś, ale po pierwsze nie podałeś jaka to jest funkcja. Nie podałeś szczegółów co i jak ma być. Przecież nie będziemy zgadywać.

Odnośnie problemu chyba wygląda na to ze nie można wstawiać SQLa, ale może napisz sobie funkcyjkę w MSSQLu i ja po prostu wywołaj, albo masz cos niepoprawnie. Pokaz kod może ktoś wpadnie na jakiś pomysł? Bo tak jak juz mówiłem nikt nie będzie zgadywał o co Ci chodzi.

Cytat
widze ze to forum nie jest duzo warte

Jak będą caly czas takie pytania to na pewno nie będzie dużo warte.


--------------------
Go to the top of the page
+Quote Post
nameless
post
Post #7





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.12.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


create function LiczbaRekordow(@Tabela nvarchar(255))
returns int
as
begin
declare @LiczbaRekordow int
--
-- tutaj ma byc jakis kod ktory pobiera ilosc rekordow z @Tabela
--
return @LiczbaRekordow
end

sory troche sie unioslem


--------------------
Go to the top of the page
+Quote Post
SongoQ
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


W Postgresie i ORACLE to by bylo cos takiego:

  1. SELECT COUNT(*)
  2. INTO @LiczbaRekordow FROM @Tabela;


Sprawdz moze zadziala, na MSSQLu sie nie znam ale takie cos jest w innych bazkach.


--------------------
Go to the top of the page
+Quote Post
nameless
post
Post #9





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.12.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


no wlasnie nie moge uzyc zmiennej jako nazwy tabeli z ltorej pobieram dane
moge zbudowac stringa ktorego pozniej przekazuje do procedury sp_executesql
np set @query=N'select count(*) from '+@Tabela
ale w funkcji nie moge wywolac procedury sp_execute sql

i kolo sie zamyka

sam widzisz ze to nie takie proste
a szukalem na ten temat duzo

Ten post edytował nameless 31.08.2005, 13:03:22


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


Trzeba bylo odrazu pisac, ze chodzi Ci o funkcje/procedure w T-SQL'u... w takim razie jesli nie mozesz korzystac z execute to nie da rady zrobic tego w pelni dynamicznie. Jesli tych tabel nie ma duzo to mozesz zrobic duzego IF'a dla kazdej tabeli, innego wyjscia z takimi restrykcjami nie widze.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
nameless
post
Post #11





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.12.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


chodzi o to zeby to bylo uniwersalne
if mnie nie satysfakcjonuje
a tabel jest tyle ze kazdego miesiaca jest ich dodawanych ok kilkunastu
a takich baz jest na serwerze w tej chwili 8


--------------------
Go to the top of the page
+Quote Post
SongoQ
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


Ale z tego co widze to nie jest problem z dynamika tego zapytania tylko jak wywolac zapytanie z dynamiczna tabela (tabela zalezna od parametru funkcji)

Wstaw jakas wartosc zamiast tej zmiennej i zobaczysz czy jest problem z wykonaniem zapytania czy poprostu nie mozna w ten sposob laczyc. Dodam tylko ze PL/SQL laczy sie stringi przez || a nie +, sprawdz moze to pomoze.

Radze szukac w manualu na temat dynamicznego zapytania, podobnie to bedzie rozwiazaniem Twojego innego tematu na tym forum.


--------------------
Go to the top of the page
+Quote Post
nameless
post
Post #13





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.12.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


w t-sql + laczy stringi
jesli wstawie normanie nazwe tabeli dziala jesli wstawie @Tabela to sql msli ze tak nazywa sie tabela a nie podstawi wartosc zmeinnej

o ktory temat chodzi?


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


Cytat(nameless @ 2005-08-31 14:45:05)
chodzi o to zeby to bylo uniwersalne
if mnie nie satysfakcjonuje
a tabel jest tyle ze kazdego miesiaca jest ich dodawanych ok kilkunastu
a takich baz jest na serwerze w tej chwili 8

No to przykro mi, ale nie sadze aby bylo rozwiazanie spelniajace Twoje warunki...

SQL Server nie umozliwia przekazywania nazwy tabeli jako zmienna, wiec albo dynamiczne zapytanie i execute albo kicha..

Nie rozumiem dlaczego nie mozesz uzyc execute, przy tak prostym zapytaniu powinno to byc dosc wydajne.

Jest jeszcze szansa, ze dane o ilosci elementow sa trzymane w tabeli systemowej, w ktorej sa rozne dane o tabelach (i innych obiektach), ale wlasnie wrocilem z pracy, gdzie mam dostep do Sql Servera wiec juz dzisiaj tego nie sprawdze.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
nameless
post
Post #15





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.12.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


w t-sqlu w funkcjach nie mozna uzywac procedur skladowanych a so_executesql taka jest tyle ze wbudowana

funkcje zasadniczo zwracaja jakis obiekt
to co zwracaja deklarujesz na poczatku
funkcja prze wykonaniem wie co uzytkownik dostanie
a teraz wyobraz sobie ze w srodku takiej funkcji wykonujesz select * from Tabela za pomoca executa uzytkownik dostaje tabele zamiast inta
dlatego nie da sie tego uzyc


--------------------
Go to the top of the page
+Quote Post
FiDO
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


To dlaczego nie zrobisz tego jako procedure ?


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
nameless
post
Post #17





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 16.12.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


tak chyba bede musial zrobic


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 03:43