Ich bin mit der folgenden T-SQL-Abfrage in SQL Server 2005 (Management Studio IDE) weitergeben müssen:Wie Parameterwerte an eine T-SQL-Abfrage
DECLARE @id int;
DECLARE @countVal int;
DECLARE @sql nvarchar(max);
SET @id = 1000;
SET @sql = 'SELECT COUNT(*) FROM owner.myTable WHERE id = @id';
EXEC (@sql) AT oracleServer -- oracleServer is a lined server to Oracle
Ich bin nicht sicher, wie die Eingabeparameter übergeben @id an die EXEC-Abfrage und übergibt das Ergebnis an @countVal. Ich sah einige Beispiele für Microsoft SQL Server wie:
EXEC (@sql, @id = @id)
ich dies für Oracle versucht, aber ich habe eine Anweisung Fehler:
OLE DB provider "OraOLEDB.Oracle" for linked server "oracleServer"
returned message "ORA-00936: missing expression"
Das EXEC() Beispiel funktioniert nicht mit Oracle, sehr traurig. Wenn nicht Parameter in @sql, läuft es gut. Ich habe keine Ahnung, Pass-Through-Abfrage für Oracle-Datenbank mit Ausgabeparameter zurück zu SQL zu verwenden. –
SET @sql = 'auswählen? = count (*) von owner.mytable '; Exec (@ sql, @ countVal-Ausgabe) bei Oracle-Server - Fehler für Oracle-Fall –
Das Problem mit diesem Ansatz ist, dass Sie die Ergebnismenge nicht innerhalb einer anderen Stored Procedure zurückgeben können, ohne eine temporäre Tabelle zu erstellen (nicht möglich mit einer dynamischen Abfrage) ... gibt es dafür keine Funktion? –