Toon posts:

[SQL] Stored Procedures combineren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Probleem! Ik heb 2 stored procedures, te weten:

* PartInOrderingQty, welke de hoeveelheid in bestelling zijnde artikelen teruggeeft. Deze doet dit voor het artikel dat je meegeeft als input.
* InventoryBrowse, welke mij een overzicht geeft van de voorraad. Deze doet dit voor ALLE artikelen op voorraad

Ik wil deze 2 stored procedures combineren zodat ik in het overzicht van de voorraad ook de hoeveelheid in bestelling zijnde artikelen kan zien.

Het probleem is alleen dat de stored procedure van PartInOrderingQty een PartCode verwacht, terwijl ik die niet meegeef, waardoor ik nu dus overal 0.00 zie staan, terwijl dit niet zo is... Als ik wél een PartCode meegeef, krijg ik keurig netjes de in bestelling zijnde hoeveelheid te zien.

Zou het mogelijk zijn om de PartCode per regel uit InventoryBrowse door te slingeren naar de stored procedure PartInOrderingQty en zodoende de in bestelling zijnde hoeveelheid terug te geven voor ALLE regels?

Het gaat om een Sybase database.

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

Annie

amateur megalomaan

Een nieuwe sproc bouwen met de gewenste functionaliteit zal wel geen optie zijn. Anders had je dit niet gevraagd.

Ik ken sybase niet goed, maar in mssql zou het (globaal) op de volgende wijze kunnen worden opgelost.
1. output van InventoryBrowse in een temporary table plaatsen
2. cursor voor temporary table definieren
3. voor elke row een dynamisch statement opbouwen voor PartInOrderingQty.
4. resultaten combineren

Qua performance niet echt een aanrader natuurlijk.

Misschien is het dan nog wel beter/sneller om vanuit je applicatie meerdere malen de PartInOrderingQty sproc aan te roepen en in je applicatie de resultaten te combineren.

Today's subliminal thought is:


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Kijk eens of je RDBMS ook 'cursors' ondersteunt. Daarmee kan je nl. met een for-loop door een resultset heenlopen, en per regel je stored proc aanroepen met de juiste parameters.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik ken sybase niet, maar ik zou het (in MSSQL, @Annie) in een user-defined functie hebben gestopt. Die kun je inline in een select aanroepen (hoewel performance-wise dat geen geweldig idee zou zijn, maar dat zou een SP in een cursor aanroepen of werken met temp tables ook niet zijn ;) )

Hoe dan ook, wat je omschrijft (je probleem) is precies dat wat je nodig hebt: een user-defined function.

[ Voor 19% gewijzigd door RobIII op 09-08-2006 22:15 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Annie schreef op woensdag 09 augustus 2006 @ 12:22:
Een nieuwe sproc bouwen met de gewenste functionaliteit zal wel geen optie zijn. Anders had je dit niet gevraagd.

Ik ken sybase niet goed, maar in mssql zou het (globaal) op de volgende wijze kunnen worden opgelost.
1. output van InventoryBrowse in een temporary table plaatsen
2. cursor voor temporary table definieren
3. voor elke row een dynamisch statement opbouwen voor PartInOrderingQty.
4. resultaten combineren

Qua performance niet echt een aanrader natuurlijk.

Misschien is het dan nog wel beter/sneller om vanuit je applicatie meerdere malen de PartInOrderingQty sproc aan te roepen en in je applicatie de resultaten te combineren.
Een compleet nieuwe proc bouwen met de gewenste functionaliteit is inderdaad niet echt een optie denk ik. De berekening voor de hoeveelheid in bestelling is dermate lastig dat ik die liever apart in een stored proc houd.

Ik ben inmiddels bezig met de bovengenoemde oplossing. Beetje ruk alleen dat ik vrijwel nul komma nul verstand heb van cursors, maar goed... Wat je niet weet kan je leren :) Geen probleem, weer een uitdaging erbij :D. Eerlijk gezegd dacht ik al aan deze oplossing (ik zag eerlijk gezegd geen andere uitweg), maar misschien wisten jullie nog een snellere weg die ik over het hoofd zag.

Ik ben benieuwd hoe het allemaal gaat lopen performancematig gezien...