|
| MSSQL: Avanceret WHERE klausul Fra : Ukendt |
Dato : 03-08-02 17:51 |
|
Hej,
Kan man lave noget lign dette :
CREATE PROCEDURE proc
(
@FirmaId int = -1
)
AS
SELECT
Id,
FirmaId,
Navn,
Beskrivelse
FROM personer
WHERE ( IF( @FirmaId = -1 ) FirmaId = ANY( SELECT DISTINCT Id FROM firmaer )
ELSE FirmaId = @FirmaId )
- altså; hvis @FirmaId er lig -1 ( default ) returneres alle personer og
hvis @FirmaId er lig et andet tal returneres kun de records hvor kriteriet
passer.
( Ovenstående virker naturligvis ikke, og problemet kunne sagtents løses med
2 forskellige seletc's, men hvis der nu er f.eks. 3 parametre på proceduren
bliver 2 høns hurtigt til 9 )
På forhånd tak...
Søren Staun Jørgensen
| |
Jakob Andersen (03-08-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 03-08-02 19:50 |
| | |
Ukendt (05-08-2002)
| Kommentar Fra : Ukendt |
Dato : 05-08-02 11:49 |
|
Jamen selvfølgelig
Tak for hjælpen...
Søren
"Jakob Andersen" <jakob@effectus.dk> skrev i en meddelelse
news:aih8ct$2a6u$1@news.cybercity.dk...
> "Soren Staun Jorgensen" <ssj(at)cadeye(dot)dk> wrote
> > ( Ovenstående virker naturligvis ikke, og problemet kunne sagtents løses
> med
> > 2 forskellige seletc's, men hvis der nu er f.eks. 3 parametre på
> proceduren
> > bliver 2 høns hurtigt til 9 )
>
> Du prøver at lave dynamisk SQL i en stored procedure. Det gør man som
regel
> ved at ved at bruge EXEC funktionen eller sp_executesql
>
> Du kan læse mere her:
> < http://www.sqlteam.com/item.asp?ItemID=4599>
> < http://www.sqlteam.com/item.asp?ItemID=4619>
>
> --
> Jakob Andersen
> http://www.stresscd.dk/ - Udnyt stress positivt
>
>
| |
Nis Jørgensen (05-08-2002)
| Kommentar Fra : Nis Jørgensen |
Dato : 05-08-02 10:43 |
|
On Sat, 3 Aug 2002 18:51:11 +0200, "Soren Staun Jorgensen"
<ssj(at)cadeye(dot)dk> wrote:
>
>
>Kan man lave noget lign dette :
>
>CREATE PROCEDURE proc
>(
> @FirmaId int = -1
>)
>AS
>
>SELECT
> Id,
> FirmaId,
> Navn,
> Beskrivelse
>FROM personer
>WHERE ( IF( @FirmaId = -1 ) FirmaId = ANY( SELECT DISTINCT Id FROM firmaer )
>ELSE FirmaId = @FirmaId )
>
>- altså; hvis @FirmaId er lig -1 ( default ) returneres alle personer og
>hvis @FirmaId er lig et andet tal returneres kun de records hvor kriteriet
>passer.
Hvad med
WHERE @FirmaId = -1 OR FirmaId = @FirmaId
(det er ikke helt det samme - men hvis FirmaID altid henviser til en
række i firmaer er resultatet det samme)
--
Nis Jørgensen
Amsterdam
Please include only relevant quotes, and reply below the quoted text. Thanks
| |
Ukendt (05-08-2002)
| Kommentar Fra : Ukendt |
Dato : 05-08-02 11:53 |
|
Hej Nis,
Duer ikke da Id på firmaer er identity, og -1 derfor ikke findes.
Svaret må være dynamisk SQL
Søren
"Nis Jørgensen" <nis@dkik.dk> skrev i en meddelelse
news:gvhskuossk9d31ak5qjidvoob323c7uedt@4ax.com...
> On Sat, 3 Aug 2002 18:51:11 +0200, "Soren Staun Jorgensen"
> <ssj(at)cadeye(dot)dk> wrote:
>
> >
> >
> >Kan man lave noget lign dette :
> >
> >CREATE PROCEDURE proc
> >(
> > @FirmaId int = -1
> >)
> >AS
> >
> >SELECT
> > Id,
> > FirmaId,
> > Navn,
> > Beskrivelse
> >FROM personer
> >WHERE ( IF( @FirmaId = -1 ) FirmaId = ANY( SELECT DISTINCT Id FROM
firmaer )
> >ELSE FirmaId = @FirmaId )
> >
> >- altså; hvis @FirmaId er lig -1 ( default ) returneres alle personer og
> >hvis @FirmaId er lig et andet tal returneres kun de records hvor
kriteriet
> >passer.
>
> Hvad med
>
> WHERE @FirmaId = -1 OR FirmaId = @FirmaId
>
> (det er ikke helt det samme - men hvis FirmaID altid henviser til en
> række i firmaer er resultatet det samme)
>
> --
> Nis Jørgensen
> Amsterdam
>
> Please include only relevant quotes, and reply below the quoted text.
Thanks
| |
Nis Jørgensen (05-08-2002)
| Kommentar Fra : Nis Jørgensen |
Dato : 05-08-02 14:39 |
|
On Mon, 5 Aug 2002 12:52:37 +0200, "Soren Staun Jorgensen"
<ssj(at)cadeye(dot)dk> wrote:
>
>Duer ikke da Id på firmaer er identity, og -1 derfor ikke findes.
Men jeg tester på parametren, og ikke på feltet i tabellen. Jeg kender
ikke meget til MSSQL server, men jeg kan ikke forestille mig at mit
forslag ikke virker. Har du prøvet det?
>Svaret må være dynamisk SQL
Det kan garanteret også gøres på den måde.
--
Nis Jørgensen
Amsterdam
Please include only relevant quotes, and reply below the quoted text. Thanks
| |
Ukendt (05-08-2002)
| Kommentar Fra : Ukendt |
Dato : 05-08-02 16:43 |
|
Hej Nis,
Upps - det havde jeg lige overset, sorry !
Og, ja - du har ret det virker faktisk - tak
Søren
"Nis Jørgensen" <nis@dkik.dk> skrev i en meddelelse
news:74vsku8k4ltrnkkuc38ms56ef4p1gttfob@4ax.com...
> On Mon, 5 Aug 2002 12:52:37 +0200, "Soren Staun Jorgensen"
> <ssj(at)cadeye(dot)dk> wrote:
>
> >
> >Duer ikke da Id på firmaer er identity, og -1 derfor ikke findes.
>
> Men jeg tester på parametren, og ikke på feltet i tabellen. Jeg kender
> ikke meget til MSSQL server, men jeg kan ikke forestille mig at mit
> forslag ikke virker. Har du prøvet det?
>
> >Svaret må være dynamisk SQL
>
> Det kan garanteret også gøres på den måde.
>
> --
> Nis Jørgensen
> Amsterdam
>
> Please include only relevant quotes, and reply below the quoted text.
Thanks
| |
|
|