[SQL 7]2 select liggen elkaar dwars

Pagina: 1
Acties:

  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
ha,

ik probeer een stored procedure te maken met daarin 2 select statements.
dit is een stukje code:
=============== (dit tik ik uit het hoofd)
declare @counter
declare @itemid

select @counter = count (* ) from tblBLA where bla_bla=@bla
select @itemid = itm_id from tblItems where itm_naam=@naam

begin tran
if @count > 1
then
begin
raiserror ('bestaat al',16,1)
end
else
begin
insert into .......
...
end
commit tran
===============
de variabelen @naam en @bla worden meegegeven bij de aanroep van de stored procedure

deze 2 selects gaan niet samen want dat gaat verkeerd!!
Als ik 'select @itemid' uit comentariseer dan werkt de 'select @count' perfect.
Als ik 'select @count' uitzet dan werkt 'select @itemid' perfect
maar zoals gezegd gaan ze niet samen

ik hoop dat jullie het snappen vraag anders maar om wat niet duidelijk is

weet iemand wat hier aan te doen is zodat ze WEL alle 2 werken in de stored procedure.

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
is er niemand die een antwoord weet???

of snappen jullie de vraag niet :)

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


Verwijderd

'k had geen zin om te antwoorden eerder :Y)

Wat zijn de values van @counter en @itemid vlak voor die begin tran?

doet ie het gewoon niet? of geeft ie nog iets van 'n foutmelding?

  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
@counter telt uit een database of een bepaalde combo van waarden voorkomt als dat zo is dan word de counter 1 en dan doet ie in de loop RAISERROR

@counter is dus een int

en @itemid selecteert uit de database de waarde ITM_ID waarvoor geld ITM_NAAM = @naam

@itemid is dus een int

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
hij genereert ook een foutmelding idd
maar die weet ik zo niet uit het hoofd.
ik heb de database niet thuis.

maar hij gaat fout op de regel van de @counter
want als je die voor de declare @itemid zet geeft ie een ander regel nummer aan.
Maar als je de regel van @itemid uitzet geeft ie geen foutmeldingen bij @counter

en als je de regel van @counter uitzet gaat het ook goed met @itemid
maar ik wil niet dat ie altijd de database vult maar alleen als de waarde nog niet bestaat dus als @counter = 0

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


Verwijderd

elke error krijg je in query analyzer? behalve dat je geen types opgeeft bij declare, is er weinig mis

  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
ik geef idd ook op dat de variablen @counter en @itemid van het type int moeten zijn.

sorry was ik vergeten omdat ik het uit het hoofd moest doen.

maar er is verder nix verkeerd aan die regels, maar wat is er aan te doen zodat SQL dat ook vind :)

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
ik krijg dus een error in de zin van:
"kan van @naam niet omzetten naar een int"

en dat wil ik ook helemaal niet
hij moet uit de tabel de waarde itm_ID nemen (dat is dus wel een int) waarvoor geld dat waarde itm_NAAM = @naam

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Even los van de probleem (beetje offtopic dus ;))
Kan je niet beter gebruik maken van een "if exists()" constructie ipv de "count(* )"? Of gebruik je de @counter var nog ergens anders voor?

Today's subliminal thought is:


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Geef de echte code maar eens. Misschien zit het gewoon in iets kleins dat je nu niet ziet omdate je het uit het hoofd hebt getypt.

  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
Op dinsdag 23 april 2002 19:38 schreef Annie het volgende:
Even los van de probleem (beetje offtopic dus ;))
Kan je niet beter gebruik maken van een "if exists()" constructie ipv de "count(* )"? Of gebruik je de @counter var nog ergens anders voor?
dat zag ik ook al op het internet
ga ik morgen eens proberen :)

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
Op dinsdag 23 april 2002 20:16 schreef Goodielover het volgende:
Geef de echte code maar eens. Misschien zit het gewoon in iets kleins dat je nu niet ziet omdate je het uit het hoofd hebt getypt.
ik probeer morgen eerste even met if exist(..)

mocht dta ook niet werken dan post ik de code wel ff hier

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


Verwijderd

Op dinsdag 23 april 2002 17:37 schreef GaveGozer het volgende:
ik krijg dus een error in de zin van:
"kan van @naam niet omzetten naar een int"

en dat wil ik ook helemaal niet
hij moet uit de tabel de waarde itm_ID nemen (dat is dus wel een int) waarvoor geld dat waarde itm_NAAM = @naam
De huidige 'code' die je postte zou dit wel goed moeten doen. De real code zal dus een typo oid bevatten, post die aub :)

  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
dit is de echte code :-)
zat niet veel verschil in met de door mij verzonnen code

declare @teller int
declare @itemidint

select @teller = count (* ) from tblEvent where evt_eigenaar=@eigenaar and evt_naam=@naam and evt_procedure=@procedure
select @itemid = itm_id from tblItem where itm_naam = @eigenaar

begin tran
if (@teller >= 1)
begin
raiserror ("Deze gebeurtenis bestaat al",16,1)
end
else
BEGIN

insert into tblEvent (evt_eigenaar, evt_naam, evt_procedure)
values
(
@itemid,
@naam,
@procedure
)
END
commit tran

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
   declare @itemid int
   select @itemid = (select itm_id from tblItem where itm_naam = @eigenaar )

   begin tran
   if exists (select * from tblfrom tblEvent where evt_eigenaar=@eigenaar and evt_naam=@naam and evt_procedure=@procedure)
     raiserror ("Deze gebeurtenis bestaat al",16,1)
   else
     insert into tblEvent (evt_eigenaar, evt_naam, evt_procedure)
     values ( @itemid
         ,@naam
         ,@procedure
        )
   commit tran

probeer deze es?

  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
ik zal het morgen eens proberen
heb er vandaag geen tijd voor gehad

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!


Verwijderd

Op woensdag 24 april 2002 12:25 schreef GaveGozer het volgende:
dit is de echte code :-)
zat niet veel verschil in met de door mij verzonnen code

declare @teller int
declare @itemidint
Hoort daar geen spatie tussen?

  • GaveGozer
  • Registratie: Februari 2000
  • Laatst online: 25-09-2025
Op woensdag 24 april 2002 14:17 schreef Otis het volgende:

[..]

Hoort daar geen spatie tussen?
die zit er ook tussen maar valt denk ik weg omdat het een tab is eigenlijk

Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!

Pagina: 1