Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Uebergabe von NULL als Parameter fuer gespeicherte pozeduren im MS-SQL-Server

6 views
Skip to first unread message

Irmgard Schwenteck

unread,
May 28, 2010, 12:59:11 PM5/28/10
to
Hallo,

ist das jetzt hier ein bug oder ein feature:

Auf dem SQL-Server gibt es eine gespeicherte Prozedur, die verarbeitet
die ᅵbergebenen Argumente zu einer Pivotabfrage. Der Fall, daᅵ fᅵr
bestimmte Argumente NULL ï¿œbergeben wird, wird darin extra behandelt.


ï¿œber eine Webseite kann der Nutzer sich jetzt Zeitrï¿œume und ausgegebene
Spalten zusammenklickern, daraus generiert PHP dann den Prozeduraufruf
mit den entsprechenden Argumenten.

Ist eines der Argumente NULL, schlï¿œgt der Aufruf ï¿œber PHP fehl, weil in
der Prozedur die funktion ifnull(..) nicht greift, weil das ï¿œbergebene
Argument offenbar was anderes als NULL ist und der Rest dann nicht mehr
paï¿œt. Wird der ausgegebene SQL-String direkt im management-Studio
ausgefï¿œhrt, funktioniert es.

So zum Beispiel:
$sql = "EXECUTE GeneratePivotQuery 'vUmsatz', 'sum', 'Umsatz', 'cTag',
NULL, 'Gesamt', 'Jahr=2010 AND Monat=1'";

$rs = mssql_query($sql, $db);

Anstelle von NULL kï¿œnnte auch eine Filterbedingung stehen.

Ich habs jetzt so gelᅵst, daᅵ PHP dann anstelle "NULL"
den Filter " '1=1' " ï¿œbergibt, das geht soweit.

ï¿œbergibt da PHP die NULLwerte nicht richtig?
PHP Version 5.2.6, SQL 2005 express

Gruᅵ
Irmgard

Richard Ohl

unread,
May 29, 2010, 12:25:35 PM5/29/10
to
Irmgard Schwenteck tastaturte dies:

> �bergibt da PHP die NULLwerte nicht richtig?


> PHP Version 5.2.6, SQL 2005 express

Hi,
ich wei� nicht, wie du mittels PHP zugreifst. mssql_bind erwartet f�r NULL
den Parameter isnull = true.
Hilft dir das?
VG Richard
--
Don't take life too seriously. You'll never get out alive. -- Bugs Bunny

Irmgard Schwenteck

unread,
May 29, 2010, 2:11:44 PM5/29/10
to
Hallo

Richard Ohl schrieb:

>
>> �bergibt da PHP die NULLwerte nicht richtig?
>> PHP Version 5.2.6, SQL 2005 express
>
> Hi,
> ich wei� nicht, wie du mittels PHP zugreifst. mssql_bind erwartet f�r NULL
> den Parameter isnull = true.
> Hilft dir das?

Den Aufwand, das ganze Zusammenstellen der Benutzeranforderungen �ber mssql_
execute und mssql_bind zu realisieren, finde ich wesentlich h�her, als
_einen_ sql-string zusammenzubasteln:

Die prozedur GeneratePivotQuery erzeugt eine select-abfrage und gibt das
Ergebnis aus.

$sql = "EXECUTE GeneratePivotQuery 'vUmsatz', 'sum', 'Umsatz', 'cTag',
NULL, 'Gesamt', 'Jahr=2010 AND Monat=1'";

$rs = mssql_query($sql, $db);

Da es keine Aktionsabfrage sondern eine Auswahlabfrage ist, geht es ja
prinzipiell auch �ber mssql_query. Bis auf den Umstand, da� NULL-werte
offenbar nicht richtig �bergeben werden. Dar�ber ist aber in der
Funktionsbeschreibung nichts zu finden, deshalb frage ich hier.

Gru�
Irmgard

0 new messages