Toon posts:

input parameter stored procedure

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb hier een stored procedure die een inut parameter nodig heeft.
in de tabel staan bedrijven die gebruik maken van automatisch incasso en bedrijven die geen gebruik maken van automatisch incasso. De input parameter is van het type bit, nu heb ik 3 rapporten die als control source deze stored procedure gebruiken. maar het ene rapport moet dus alle bedrijven geven die geen autom. incasso gebruiken, het andere rapport alle bedrijven die wel autom incasso gebruiken en het 3e raport alle bedrijven, dus zowel autom. incasso als geen autom incasso. maar bij dat laatste rapport vraagt ie natuurlijk ook om die input parameter...hoe kan ik in de stored procedure zeggen dat als ik daar niks invul dat ie dan alle bedrijven moet geven?

Bij voorbaat dank...Grtz, Paul...

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

In runtime de SQL aanpassen adhv if-statements?
Welke taal gebruik je?

Verwijderd

Topicstarter
Die SP wordt aangeroepen in een dll of vanuit een access report...
taal is dus VB of VBA

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 17-09 08:12

Crazy D

I think we should take a look.

precies, stored procedure aanpassen.
In MSSQL (en ik neem aan in andere db's ook) kun je een parameter een default waarde geven.
En m.b.v. if statements kun je in de query zelf een en ander afvangen.

Exact expert nodig?


Verwijderd

Topicstarter
maar hoe ziet dat if statement er dan ongeveer uit?
kom niet verder dan if @iAutomatischIncasso = NULL

sorry:)

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 16-09 21:53

Greyfox

MSX rulez

In SQL-server kun je in je stored procedure aangeven wat de default value is.
@argument <datatype> =Defaultvalue
bv:
code:
1
2
3
CREATE PROCEDURE au_info2
   @lastname varchar(30) = 'D%',
   @firstname varchar(18) = '%'

(wellicht dat dit met datatype 'bit' anders werkt)

MSX 2 rulez more


  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

[edit: Hier stond larie...]

Verwijderd

Topicstarter
volgens mij kan ik em geen ander datatype geven dan een int want hij staat als bit in de database.

ik zeg dus in de sp:
create procedure bla
@iAutomatischIncasso bit,

AS
select * from tbl_abonnement
where tbl_abonnement.abon_autom_incasso = @iAutomatischIncasso

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Te laat geëdit dus... |:(

Kijk voor de eerste twee lijsten lukt je sp...
Laat voor de derde lijst de "incasso=true/false" uit je where-clausule. Je kan je sql van die sp toch in runtime bepalen?

Verwijderd

Topicstarter
die 3e lijst gebruikt die zelfde stored procedure dus als die 1e 2 lijsten...je kan inderdaad zeggen, waarom gebruik je geen andere stored procedure die niet kijkt naar die autom_incasso. maar ik wil het liever in 1 SP hebben als dat mogelijk is...

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Tja als je een bit gebruikt, zul je nooit drie verschillende waarden kunnen toekennen aan je parameter...
:)

Verwijderd

Topicstarter
daar kan ik inkomen yah :)
Nouja dan maar 2 sp's...thnx.

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Op dinsdag 23 oktober 2001 13:58 schreef Wezen het volgende:
Tja als je een bit gebruikt, zul je nooit drie verschillende waarden kunnen toekennen aan je parameter...
:)
Een bit in sqlserver kan 3 waarden hebben true,false en noppes ;)

Verwijderd

Topicstarter
Ja precies!
en kan ik dan neit zeggen dat als ie noppes is dat ie dan alles moet laten zien? dus zowel autom. incasso als niet autom incasso?
ik gebruik MS SQL server idd

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Op dinsdag 23 oktober 2001 14:02 schreef raptorix het volgende:

[..]

Een bit in sqlserver kan 3 waarden hebben true,false en noppes ;)
Probeer jij de "allow nulls"-property van een bit eens aan te zetten? ;)
(SQL-server 7.0 toch alleszins)

edit:

Als parameter zou het kunnen...Weer wat bijgeleerd!

Verwijderd

Default waarde van je parameter gewoon op NULL zetten.
Vervolgens if parameter is null etc..
(of mag default null niet MS SQL?)

Verwijderd

Topicstarter
Dat gaat gewoon goed, ik heb allow null's aangezet voor het veld autom_incasso in de tabel tbl_abonnement...

Verwijderd

Topicstarter
Yah ik heb nu ook die default waarde van die input parameter op NULL gezet.
op de volgende manier dus:
@iAutomatischIncasso bit = null

maar hoe ziet die if statement er dan ongeveer uit :?

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Ik denk dat je me niet goed begrepen hebt...
In jouw tabel hebben de bits de waarden 0 of 1.
Je kan dan gaan kijken waar

incasso = param

De waarden in de tabel zelf kunnen geen andere waarden hebben dan 0 of 1 (hebben ze de waarde NULL, dan komen ze in geen enkele lijst voor).
Dus als je als defaultwaarde NULL neemt, krijg je

where incasso=NULL

En heb je dus een lege lijst, niet?
Met die defaultwaarde kan je op die manier dus niets. ;(

Verwijderd

Topicstarter
Yah daar heb je 100% gelijk in...

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 17-09 08:12

Crazy D

I think we should take a look.

Op dinsdag 23 oktober 2001 14:18 schreef Tux_NL het volgende:
Yah ik heb nu ook die default waarde van die input parameter op NULL gezet.
op de volgende manier dus:
@iAutomatischIncasso bit = null

maar hoe ziet die if statement er dan ongeveer uit :?
Je zou iets kunnen doen als in
(uit het slaperige hoofd, dus vauten voorbehauden :P)
code:
1
2
3
4
5
6
7
8
9
10
11
create procedure spDoeIets(@bitje bit = NULL) AS

if @bitje = NULL
begin
    select * form tabelletje
end
else
begin
    select * from tabelletje
    where bitveldje = @bitje
end

Zoiets dus.

Exact expert nodig?


Verwijderd

Topicstarter
ok zal et ff proberen...

Verwijderd

Topicstarter
Ok zo werkt ie inderdaad zoals ik wil!

op een klein foutje na....
jij zei: if @bitje = null
dat moest zijn if @bitje is null

maar dat zal wel door je slaperige hoofd komen ;)

Thnx allemaal!

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Overigens kan je maar beter niet met die null value gaan kutten, als je echt 3 waarden nodig hebt gebruik dan gewoon een tiny int, kost je een byte aan geheugen, en een bit neemt ook een byte aan geheugen.

Met name als je data naar dubieuze databases gaat converteren kan je nogal es problemen hebben.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 17-09 08:12

Crazy D

I think we should take a look.

Op woensdag 24 oktober 2001 01:17 schreef raptorix het volgende:
Met name als je data naar dubieuze databases gaat converteren kan je nogal es problemen hebben.
Klopt, maar dit is alleen in de stored proc, in de db staat er alleen een 0 of 1, geen null values. Tenminste, dat heb ik begrepen.
Een tinyint had idd ook gekunt, 0 of 1 voor de bit-voorwaarde, de rest voor 'alle records'.

Exact expert nodig?

Pagina: 1