PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sybase_query returns boolean


c4
07.12.2004, 15:34:37
Moin,

ich habe ein unfeines Problem bei Abfragen im ASE von Sybase. Erst mal der Code: // $_GET['spid'] und $_GET['server'] sind natürlich 1a gesetzt
$conn=connect('sybase', $_GET['server'], '', '', 'master');

$result=sybase_query("sp_showplan {$_GET['spid']}, null, null, null", $conn) or die(sybase_get_last_message());
echo "1 - $result<br>n";
$result=sybase_query("select * from vertrag..rs_lastcommit", $conn) or die(sybase_get_last_message());
echo "2 - $result<br>n";

if (sybase_num_rows($result)>0) {
while ($data=sybase_fetch_row($result)) {
print_r($data);
}
}
else {
echo sybase_get_last_message()."<br />n";
} Man sieht, es nimmt sich nicht viel zu MySQL & Co.

Die Ausgabe: 1 - 1<br>
2 - Resource id #7<br>

Array
(
[0] => 0
[1] => 00000000
[2] => 00000000
[3] => Mon Jan 1 00:00:00 1900
[4] => Thu Dec 2 11:25:28 2004
[5] => 00000000
[6] => 00000000
[7] => 00000000
[8] => 00000000
[9] => 00000000
[10] => 00000000
[11] => 00000000
[12] => 00000000
) Wie man sieht, wird die stored procedure sp_showplan ohne Fehler ausgeführt und sybase_query() gibt true zurück. TRUE!! Das steht nicht man im Manual, dass die Funktion das könnte!

Kennt wer das Problem? Vielleicht auch bei anderen DBMS?

Danke für Hilfe
Carsten





PS: Auch ein Aufschlüsseln der SP hat nix gebracht. <?php
if (isset($_GET['spid']) && trim($_GET['spid'])!='' &&
isset($_GET['server']) && trim($_GET['server'])!='') {
$conn=connect('sybase', $_GET['server'], '', '', 'master');

$query="
declare @spid smallint
declare @batch_id int
declare @context_id int
declare @stmt_num int
declare @return_value int

set transaction isolation level 1

select @spid={$_GET['spid']}
select @batch_id = show_plan(@spid, -1, -1, -1)
select @context_id = show_plan(@spid, @batch_id, -1, -1)
select @stmt_num = show_plan(@spid, @batch_id, @context_id, -1)
select @return_value= show_plan(@spid, @batch_id, @context_id, @stmt_num)";

$result=sybase_query($query, $conn);
if (sybase_num_rows($result)>0) {
while ($data=sybase_fetch_row($result)) {
print_r($data);
}
}
else {
echo sybase_get_last_message()."<br />n";
}
}
?> Der Mist bleibt auch damit bestehen...