Powinieneś użyć funkcji zamiast procedury. Procedura zwraca (jeden lub wiele) zestawów wyników (tabele), podczas gdy funkcja zwraca pojedynczą wartość.
Należy pomyśleć dwa razy przed użyciem funkcji w klauzuli where, jeśli zawierają one klauzule select z bazy danych, ponieważ może to prowadzić do sytuacji, w której optymalizator zapytań nie będzie w stanie zoptymalizować ścieżki zapytania, co spowoduje zapytania serializowane i słabą wydajność. Jeśli ilość danych jest niewielka lub nie masz nic przeciwko potencjalnemu spadkowi wydajności, to zadziała.