Toon posts:

[Interbase] stored procedure uitvoeren in select query

Pagina: 1
Acties:
  • 136 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wil in een select query een bepaald veld wat de waarde Y of N heeft omzetten naar Ja of Nee zodat ik kan bepalen welke records ik moet hebben.

Interbase ondersteund helaas geen case.

Nu heb ik zelf een functie gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
CREATE PROCEDURE CONVERTMULTIPACK (
    MULTIPACK VARCHAR(1) CHARACTER SET NONE)
RETURNS (
    MULTIPACKJANEE VARCHAR(3) CHARACTER SET NONE)
AS
begin
  IF (multipack = 'Y') then
    multipackjanee = 'JA';
  ELSE
    multipackjanee = 'NEE';
end


Maar als ik deze functie vervolgens ga toepassen in de volgende select query:
code:
1
2
3
4
5
6
7
8
SELECT A.*, AV.VERPAKKINGOMSCHRIJVING, AE.EENHEIDOMSCHRIJVING,
       AM.MULTIPACKNAAM, AM.MULTIPACKINHOUD, AN.ARTIKELNUMMER
FROM   ARTIKELEN A
       LEFT OUTER JOIN ARTIKELVERPAKKING AV ON A.ARTIKELVERPAKKINGID = AV.VERPAKKINGID
       LEFT OUTER JOIN ARTIKELEENHEID AE ON A.ARTIKELEENHEIDID = AE.EENHEIDID
       LEFT OUTER JOIN ARTIKELMULTIPACK AM ON A.MULTIPACKID = AM.MULTIPACKID
       LEFT OUTER JOIN ARTIKELNUMMERS AN ON A.ARTIKELID = AN.ARTIKELNUMMERID
WHERE  upper(convertmultipack(A.multipack)) LIKE '%J%';
krijg ik de melding dat die de functie convertmultipack niet kan vinden.

An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
CONVERTMULTIPACK.


Maar hij bestaat dus wel degelijk. Weet iemand wat de oorzaak zou kunnen zijn?

  • ProgrammerX
  • Registratie: Juli 2002
  • Laatst online: 26-02-2021
Misschien mis ik iets, maar waarom controleer je niet in je query op de waarde 'Y' ?

Verwijderd

Topicstarter
ProgrammerX schreef op 03 February 2003 @ 08:55:
Misschien mis ik iets, maar waarom controleer je niet in je query op de waarde 'Y' ?
Ik heb een zoek scherm waar de gebruiker dus kan aangeven dat hij op multipack wil zoeken en vervolgens Ja of Nee in kan tikken.

De waarde wordt in de tabel opgeslagen als Y of N maar ik wil natuurlijk wel dat gebruiker gewoon op ja of op nee kan zoeken.

Je zou kunnen zeggen waarom sla je het dan niet gelijk zo op? Nou er zijn nog meer van deze velden waar ook zoiets voorkomt en waarbij ik het dus echt werkend moet hebben volgens de voorgestelde methode van mij.

  • Kool
  • Registratie: September 1999
  • Niet online
Het beste is een boolean waarde in je db te gebruiken, en pas bij het uitlezen bepalen of je er ja/nee of yes/no van wilt maken.

Verwijderd

Topicstarter
Kool schreef op 04 februari 2003 @ 09:15:
Het beste is een boolean waarde in je db te gebruiken, en pas bij het uitlezen bepalen of je er ja/nee of yes/no van wilt maken.
Dat zou dus betekenen dat ik de controle die normaal gesproken in het where gedeelte staat moet uitvoeren op de client zelf i.p.v. op de db server.

Ik vind dat zelf geen goede methode.

Maar ik zou graag willen weten wat de rede is waarom het nu fout gaat in die query bij het aanroepen van die convertmultipack functie.

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

Annie

amateur megalomaan

Ik heb geen verstand van interbase, maar in mssql is het niet mogelijk om op deze manier een sproc te verwerken in een query. Om te doen wat jij wil maak je daar gebruik van een user defined function (CREATE FUNCTION), misschien dat interbase ook iets dergelijks kent.

Today's subliminal thought is:

Pagina: 1