2017-08-22 33 views
1

den folgenden Speichervorgang in SQL Server MitExecute Verfahren in Anweisung in NOT IN()

CREATE PROCEDURE storeProcedureExample 
(
    @displayName NVARCHAR(256) 
) 
AS 

SELECT users.id --user.id is INT 
FROM users 
WHERE users.displayName = @displayName 
--there could be many ids from the same display name 

Wie kann ich es in einer Erklärung NICHT IN nennen?

Fehler Beispiel:

DECLARE @displayName NVARCHAR(256) = 'SomeRandomName' 

SELECT * 
FROM users 
WHERE users.id NOT IN (EXEC storeProcedureExample @displayName) 

Hinweis: Ich bin nicht daran interessiert, um sie effizienter in neu zu schreiben. Ich möchte nur wissen, wie ich die Prozedur innerhalb der NOT IN Parameter aufrufen kann. Es gibt mir „falsche Syntax nahe‚)‘“ auf den letzten Parametern oder in den EXEC

Ich bin mit SQL Server Management Studio v17.1

+0

Warum verwenden Sie nicht die Funktion anstelle der gespeicherten Prozedur und geben einen Wert zurück – varnit

+0

Weil ich nicht sicher war, dass Sie es ohne eine Speicherprozedur nicht tun können. Danke für die Hilfe! – Ragmar

Antwort

5

Sie nicht direkt möglich. Aus diesem Grund sollten Sie eine Tabellenwertfunktion statt einer gespeicherten Prozedur verwenden.

Mit einer gespeicherten Prozedur müssten Sie eine lokale Tabelle exec() in der Tabelle erstellen und dann die temporäre Tabelle für die Abfrage verwenden.

Verwandte Themen