![]() |
![]() ![]() |
![]() |
![]()
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? -------------------- |
|
|
![]()
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 :/
|
|
|
![]()
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 -------------------- |
|
|
![]()
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"
-------------------- |
|
|
![]()
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 -------------------- |
|
|
![]()
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. -------------------- |
|
|
![]()
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 -------------------- |
|
|
![]()
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:
Sprawdz moze zadziala, na MSSQLu sie nie znam ale takie cos jest w innych bazkach. -------------------- |
|
|
![]()
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 -------------------- |
|
|
![]()
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 :/
|
|
|
![]()
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 -------------------- |
|
|
![]()
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. -------------------- |
|
|
![]()
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? -------------------- |
|
|
![]()
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 :/
|
|
|
![]()
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 -------------------- |
|
|
![]()
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 :/
|
|
|
![]()
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
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 03:43 |