GOOGLE ADS

Donnerstag, 21. April 2022

So erhalten Sie den höchsten Wert aus einer gespeicherten Prozedur

Gibt es eine Möglichkeit, die oberste Zeile aus einer gespeicherten Prozedur zu erhalten?

Gespeicherte SQL Server-Prozedur

EXEC SelectedJobTypeList
┌─────────────┬──────────────┐
│ JobTypeCode | JobTypeName |
├─────────────┼──────────────┤
│ | Select All |
├─────────────┼──────────────┤
│ A1 | Road work |
├─────────────┼──────────────┤
│ B1 | Design |
├─────────────┼──────────────┤
│ C1 | Build |
└─────────────┴──────────────┘

erwartetes Ergebnis

┌─────────────┬──────────────┐
│ JobTypeCode | JobTypeName |
├─────────────┼──────────────┤
│ | Select All |
└─────────────┴──────────────┘


Lösung des Problems

Ihr Beispiel ist möglicherweise zu stark vereinfacht, da es nicht erforderlich erscheint, einen SP aufzurufen, nur um "Select All" zurückzugeben. Angenommen, Sie müssen in Ihrem Fall den SP anrufen, hätten Sie weitaus mehr Kontrolle, wenn Sie die Ergebnisse in einer temporären Tabelle erfassen und dann die Zeile auswählen, die Sie interessiert. Und obwohl Sie verwenden könnten, TOP 1haben Sie eine robustere Lösung wenn Sie eine Möglichkeit haben, eine bestimmte Zeile auszuwählen.

Hier ist ein Beispiel

-- Ensure these datatypes exactly match the data being returned by your SP
CREATE TABLE #tempJobTypeList (JobTypeCode VARCHAR(2), JobTypeName VARCHAR(32));
INSERT INTO #tempJobTypeList (JobTypeCode, JobTypeName)
EXEC SelectedJobTypeList;
SELECT JobTypeCode, JobTypeName
FROM #tempJobTypeList
WHERE JobTypeName = '';
DROP TABLE #tempJobTypeList;

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...