Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MSSQL][PHP] Pobieranie wyniku z procedury
blinku
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 10.09.2008

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


Na serwerze Ms SQL 2000 mam procedurę, ktorej zadaniem jest zwrócenie liczby za zakresu(1,2,3,4) w zależności od otrzymanego wyniku.
Potrzebuje pobrać ta wartość, ale niestety mam bardzo mala wiedze o języku php i nie za bardzo wiem jak się do tego zabrać.
Próbowalem uzywac "print 3" w procedurze i potem z poziomu php uzywalem funkcji mssql_get_last_message();
Niby działa, ale nie wydaje mi się, żeby byla to najefektywniejsza metoda.

Zastanawiam się nad [b]mssql_result[/b] ( resource $result , int $row , mixed $field ), ale nie wiem skąd mam znać pole $field skoro generuje tylko liczbę a nie tablicę;/

Samo zainicjowanie i uruchomienie procedury działa poprawnie (mssql_execute() zwraca true)

Z gory dziekuje za pomoc i przepraszam jeśli okaże się że to bylo laickie pytanie;)
Go to the top of the page
+Quote Post
Exek
post
Post #2





Grupa: Zarejestrowani
Postów: 120
Pomógł: 10
Dołączył: 16.08.2007

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


w field daj 0?
Go to the top of the page
+Quote Post
blinku
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 10.09.2008

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


$row=1;
$field=0;
echo mssql_result( $test , $row , $field );


Niestety nic nowego nie wyświetla.
Go to the top of the page
+Quote Post
Exek
post
Post #4





Grupa: Zarejestrowani
Postów: 120
Pomógł: 10
Dołączył: 16.08.2007

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


a z $row = 0 ?
Go to the top of the page
+Quote Post
blinku
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 10.09.2008

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


$row=0;
$field=0;
mssql_result( $test , $row , $field );
echo mssql_get_last_message();

dodalem mssql_get_last_message(); i co ciekawe nie ma zadnej dodatkowej odpowiedzi z serwera. Tak jakby w ogole nie wykonywal funkcji mssql_result( $test , $row , $field );
Go to the top of the page
+Quote Post
Exek
post
Post #6





Grupa: Zarejestrowani
Postów: 120
Pomógł: 10
Dołączył: 16.08.2007

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


string mssql_result ( resource $result , int $row , mixed $field );

result The result resource that is being evaluated. This result comes from a call to mssql_query().

Czyli: zrobiłeś mssql_query()?

Ten post edytował Exek 10.09.2008, 11:59:37
Go to the top of the page
+Quote Post
blinku
post
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 10.09.2008

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


Zamiast tego używam mssql_execute().
Go to the top of the page
+Quote Post
Exek
post
Post #8





Grupa: Zarejestrowani
Postów: 120
Pomógł: 10
Dołączył: 16.08.2007

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


Hmm... ok racja, zapomniałem, że chcesz użyć procedury. Nie mam doświadczenia z mssql ale:

mixed mssql_execute ( resource $stmt [, bool $skip_results ] )

z tego co mówi dokumentacja to jeśli Twoja procedura coś zwraca to pojawi się to na wyjściu funkcji mssql_execute; Zrób może $result = mssql_execute(...); var_dump($result);

Ten post edytował Exek 10.09.2008, 12:08:11
Go to the top of the page
+Quote Post
blinku
post
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 10.09.2008

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


Korzystam już takiego przypisania, bo zauwazylem że zwraca wartość boolean.
Na wszelki wypadek sprawdzilem ta funkce od ciebie:

$test=mssql_execute($sp);
var_dump($test);

Na ekranie: bool(true) ;/
Go to the top of the page
+Quote Post
Exek
post
Post #10





Grupa: Zarejestrowani
Postów: 120
Pomógł: 10
Dołączył: 16.08.2007

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


Kurcze racja, przecież procedury nie zwracają wartości. Tzn. zmień procedurę na funkcję i daj tam returna. Jest to możliwe w mssql?
Go to the top of the page
+Quote Post
mike
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


~Exek w PHP nie ma czegos takiego jak procedura. W PHP są tylko funcje. Nawet jeśli nie skorzystasz z return to funkcja i tak bedzie zwracała NULL.
Nie prowadzaj więc pojęć, których tu nie ma.
Go to the top of the page
+Quote Post
Exek
post
Post #12





Grupa: Zarejestrowani
Postów: 120
Pomógł: 10
Dołączył: 16.08.2007

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


@mike:

mistrzu, czytaj chociaż pierwszego posta:

"Na serwerze Ms SQL 2000 mam procedurę"
Go to the top of the page
+Quote Post
mike
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Exek @ 10.09.2008, 13:26:31 ) *
@mike:
mistrzu, czytaj chociaż pierwszego posta:
No tak. Za długo byłem na urlopie.
Przepraszam.
Go to the top of the page
+Quote Post
blinku
post
Post #14





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 10.09.2008

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


Dziekuję za pomoc. Problem rozwiązany.
Jesli kogoś interesuje jak to zrobiłem to tu jest kod:

$returnValue = 0;
mssql_bind($sp, "@return_value", $returnValue, SQLINT1, TRUE, FALSE); // true sprawia, ze parametr jest traktowany jako output
mssql_execute($sp);
echo $returnValue;
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.09.2025 - 19:50