2016-04-17 10 views
1

Wie kann ich benutzerdefinierte Funktion in SQL-Abfrage verwenden, um den Wert einer Variablen festzulegen.So legen Sie den Wert der Variablen in SQL-Abfrage fest

Meine Funktion ist:

function myFunc(par){return par;} 

My SQL-Abfrage ist:

const string query = 
      @" 
      DECLARE @result varchar(100) 
      SET @result= myFunc(N'test') 

      INSERT[dbo].[TempTable] ([Name]) 
      VALUES (@result) 
      "; 
+0

Welche Version von SQL verwenden Sie? –

+0

2014 und BTW dieser Code wird in Migration geschrieben, nicht in der Klasse Configuration.cs – ruud

+0

In SQL Server müssen Sie den Schemaname beim Aufrufen der Funktion angeben. . . 'dbo.myfunc (N'test ')'. –

Antwort

1

Sie müssen nur das Schema angeben, die diese Funktion gehört. Unter der Annahme, es in Schema ist dbo, nur diese Zeile ändern:

SET @result= myFunc(N'test') 

zu

SET @result= dbo.myFunc(N'test') 

Wenn Sie möchten, können Sie die Hälfte der Größe der gesamten Abfrage durch direkt aus dem Funktionsausgang Einfügen - kein @ Variable erforderlich:

INSERT INTO dbo.TempTable (Name) 
SELECT dbo.myFunc(N'test') 
+0

Ich mache das und bekomme den folgenden Fehler: ** Kann weder Spalte "myFunc" oder die benutzerdefinierte Funktion oder Aggregat "myFunc" finden, oder der Name ist mehrdeutig. ** – ruud

+0

Ich habe meine Antwort aktualisiert; Ich hatte spontan geantwortet und das Problem falsch verstanden. @GordonLinoff war in seinem Kommentar korrekt. –

Verwandte Themen