Wie kann ich eine gespeicherte Prozedur in einer anderen gespeicherten Prozedur in SQL Server ausführen? Wie werde ich die Parameter der zweiten Prozedur übergeben?Ausführen einer gespeicherten Prozedur in einer anderen gespeicherten Prozedur in SQL Server
Antwort
Sie können
abwechselnd Benutzerdefinierte Funktionen in einer gespeicherten Prozedur nennen dies Ihr Problem lösen kann
gespeicherte Prozedur Ja zu rufen, Sie, dass wie dies tun können:
BEGIN
DECLARE @Results TABLE (Tid INT PRIMARY KEY);
INSERT @Results
EXEC Procedure2 [parameters];
SET @total 1;
END
SELECT @total
Wenn Sie möchten nur bestimmte Operationen mit Ihrem zweiten SP ausführen und benötigen keine Werte zurück vom SP. Geben Sie einfach Folgendes ein:
Exec secondSPName @anyparams
Andernfalls, wenn Sie Werte benötigen, die von Ihrem zweiten SP in Ihrem ersten SP zurückgegeben werden, erstellen Sie eine temporäre Tabellenvariable mit der gleichen Anzahl von Spalten und mit derselben Definition der Spaltenrückkehr um den zweiten SP. Dann können Sie diese Werte in der ersten SP als erhalten:
Insert into @tep_table
Exec secondSPName @anyparams
Update:
Um Parameter zweite sp zu passieren, dies zu tun:
Declare @id ID_Column_datatype
Set @id=(Select id from table_1 Where yourconditions)
Exec secondSPName @id
Update 2:
Angenommen, Ihre zweite SP gibt Id
und Name
, wo Typ von id
ist int
und name
ist von varchar(64)
Typ.
jetzt, wenn Sie diese Werte in erster sp auswählen möchten erstellen Sie dann eine temporäre table
Variable und Einsatz Werte hinein:
Declare @tep_table table
(
Id int,
Name varchar(64)
)
Insert into @tep_table
Exec secondSP
Select * From @tep_table
Dadurch kehren Sie die von der zweiten SP zurückgegebenen Werte.
Hoffe, das ist klar, alle Ihre Zweifel.
tanx .. ya ich brauchen Werte, die von der zweiten SP innerhalb der ersten zurückgegeben werden. bt der Parameter, den ich übergeben muss, ist eine Ausgabe der ersten Prozedur. ist es möglich.? Bitte sehen Sie dieses Beispiel. SP1 ID aus Tabelle_1 auswählen. Ist es möglich, diese ID als Parameter der zweiten Prozedur zu übergeben? – Roys
Ja, das ist möglich, aber zuerst müssen Sie diese ID in einer Variablen speichern und dann an die zweite SP übergeben. Siehe aktualisierte Antwort. –
Die obigen Schritte arbeiteten.tanx. Wie kann ich den Ausgabewert der zweiten Sp von der ersten bekommen ..? – Roys
Angenommen, Sie eine gespeicherte Prozedur wie diese haben
Erste gespeicherte Prozedur:
Create PROCEDURE LoginId
@UserName nvarchar(200),
@Password nvarchar(200)
AS
BEGIN
DECLARE @loginID int
SELECT @loginID = LoginId
FROM UserLogin
WHERE UserName = @UserName AND Password = @Password
return @loginID
END
Jetzt wollen Sie von einem anderen gespeicherten Prozedur diese Prozedur aufrufen wie wie unten
Zweite gespeicherte Prozedur
Create PROCEDURE Emprecord
@UserName nvarchar(200),
@Password nvarchar(200),
@Email nvarchar(200),
@IsAdmin bit,
@EmpName nvarchar(200),
@EmpLastName nvarchar(200),
@EmpAddress nvarchar(200),
@EmpContactNo nvarchar(150),
@EmpCompanyName nvarchar(200)
AS
BEGIN
INSERT INTO UserLogin VALUES(@UserName,@Password,@Email,@IsAdmin)
DECLARE @EmpLoginid int
**exec @EmpLoginid= LoginId @UserName,@Password**
INSERT INTO tblEmployee VALUES(@EmpName,@EmpLastName,@EmpAddress,@EmpContactNo,@EmpCompanyName,@EmpLoginid)
END
Wie Sie oben gesehen haben, können wir cal l eine gespeicherte Prozedur aus einem anderen
Ihre sp_test: Return fullname
USE [MY_DB]
GO
IF (OBJECT_ID('[dbo].[sp_test]', 'P') IS NOT NULL)
DROP PROCEDURE [dbo].sp_test;
GO
CREATE PROCEDURE [dbo].sp_test
@name VARCHAR(20),
@last_name VARCHAR(30),
@full_name VARCHAR(50) OUTPUT
AS
SET @full_name = @name + @last_name;
GO
In Ihrem sp_main
...
DECLARE @my_name VARCHAR(20);
DECLARE @my_last_name VARCHAR(30);
DECLARE @my_full_name VARCHAR(50);
...
EXEC sp_test @my_name, @my_last_name, @my_full_name OUTPUT;
...
Ja, Es ist einfach zu, wie wir die Funktion im Laden anrufen Verfahren.
für z.B. create user define Altersfunktion und Verwendung in select query.
select dbo.GetRegAge(R.DateOfBirth, r.RegistrationDate) as Age,R.DateOfBirth,r.RegistrationDate from T_Registration R
- 1. Ausführen einer gespeicherten Prozedur innerhalb einer gespeicherten Prozedur
- 2. Get in einer anderen gespeicherten Prozedur Rückgabewert von gespeicherten Prozedur in SQL
- 3. SQL Server, mit Funktionen in gespeicherten Prozedur
- 4. Suchen einer gespeicherten Prozedur
- 5. Ausführen eines FuncView innerhalb einer gespeicherten Prozedur
- 6. Fehler beim Ausführen der gespeicherten Prozedur in einer anderen Datenbank?
- 7. Asynchroner Aufruf einer SQL Server gespeicherten Prozedur in C#
- 8. Auftrag von einer gespeicherten Prozedur
- 9. SQL Server: Auto-inkrementierte ID in einer gespeicherten Prozedur abrufen?
- 10. Mysql Call Gespeicherte Prozedur von einer anderen gespeicherten Prozedur
- 11. SQL Aggregat Ergebnisse einer gespeicherten Prozedur
- 12. Erstellen einer gespeicherten Prozedur zum Zurückgeben der Zeilenanzahl einer anderen gespeicherten Prozedur
- 13. Ausführen einer gespeicherten Prozedur in einer SELECT-Anweisung
- 14. Aufrufen einer gespeicherten Prozedur in Toad
- 15. Exit von einer gespeicherten Prozedur
- 16. Ausführen einer gespeicherten Prozedur von Oracle SQL Developer
- 17. sql2000 Schleife in einer gespeicherten Prozedur
- 18. Rückgabe mehrerer Werte aus einer gespeicherten Prozedur
- 19. SQL Server gespeicherte Prozedur Problem beim Aufrufen einer anderen gespeicherten Prozedur
- 20. Kann mehrere Abfragen in einer gespeicherten Prozedur ohne Fehler ausführen
- 21. Wie unterdrücke ich die Ergebnisse einer gespeicherten Prozedur aus einer gespeicherten Prozedur?
- 22. Suche Zeichenfolge in einer gespeicherten Prozedur
- 23. Wie Debuggen einer gespeicherten Prozedur in Toad?
- 24. Wie starten Sie SQL Server-Auftrag von einer gespeicherten Prozedur?
- 25. können wir verschiedene Abfragen in einer gespeicherten Prozedur gleichzeitig ausführen?
- 26. Wie verwende ich Ergebnis von SELECT in einer gespeicherten Prozedur in einer anderen gespiegelten Prozedur?
- 27. Aufruf einer gespeicherten Prozedur mit einem anderen in Oracle
- 28. LEFT JOIN Problem innerhalb einer gespeicherten Prozedur
- 29. Verwendung von Cursor in einer Schleife einer gespeicherten Prozedur
- 30. Verwenden eines Cursors mit dynamischem SQL in einer gespeicherten Prozedur
Planen Sie, dies in C# oder als StoredProc auf dem Server selbst zu tun? – MethodMan
Verwenden Sie das Schlüsselwort 'exec'. – Matthew
Ich muss in Server selbst ausführen – Roys