Jak wykonać procedurę składowaną w innej procedurze przechowywanej na serwerze SQL? Jak mogę przekazać parametry drugiej procedury.?Wykonaj procedurę przechowywaną w innej procedurze przechowywanej na serwerze SQL
Odpowiedz
Można zadzwonić Funkcje definiowane przez użytkownika w procedurze przechowywanej na przemian
może to rozwiązać problem zadzwonić procedura przechowywana
Tak, można to zrobić tak:
BEGIN
DECLARE @Results TABLE (Tid INT PRIMARY KEY);
INSERT @Results
EXEC Procedure2 [parameters];
SET @total 1;
END
SELECT @total
If chcesz wykonywać tylko niektóre operacje przez drugi SP i nie potrzebujesz wartości z powrotem do SP, po prostu wykonaj:
Exec secondSPName @anyparams
Jeśli potrzebujesz wartości zwróconych przez twój drugi SP w pierwszym, następnie utwórz tymczasową zmienną tabeli z równą liczbą kolumn i taką samą definicją zwrotu kolumny przez drugie SP. Następnie można uzyskać te wartości w pierwszej SP jako:
Insert into @tep_table
Exec secondSPName @anyparams
Aktualizacja:
Declare @id ID_Column_datatype
Set @id=(Select id from table_1 Where yourconditions)
Exec secondSPName @id
Aktualizacja 2::
Aby przekazać parametr do drugiego sp to zrobić
Załóżmy, że Twój drugi sp zwraca Id
i Name
, gdzie typ id
to int
i name
jest typu varchar(64)
.
teraz, jeśli chcesz, aby wybrać tych wartości w pierwszej sp następnie utworzyć tymczasowy table
wartości zmiennych i wstawić do niego:
Declare @tep_table table
(
Id int,
Name varchar(64)
)
Insert into @tep_table
Exec secondSP
Select * From @tep_table
To spowoduje powrót wartości zwracanych przez drugą SP.
Mam nadzieję, że to rozwiąże wszelkie wątpliwości.
tanx .. ya potrzebujemy wartości zwróconych przez drugi sp w pierwszym. bt parametr, który muszę przekazać, jest wynikiem pierwszej procedury. Czy to możliwe.? Pls zobacz ten przykład. SP1 Wybierz identyfikator z tabeli_1. czy można przekazać ten identyfikator jako parametr drugiej procedury? – Roys
Tak, jest to możliwe, ale najpierw musisz zapisać ten identyfikator w zmiennej, a następnie przekazać to samo do drugiego sp. Zobacz zaktualizowaną odpowiedź. –
Powyższe kroki worked.tanx. Jak mogę uzyskać wartość wyjściową drugiego Sp od pierwszego ..? – Roys
Załóżmy, że masz jedną procedurę przechowywaną jak ten
Pierwszej procedury przechowywanej:
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
Teraz chcesz wywołać tej procedury od innej procedury przechowywanej jak poniżej
Druga procedura przechowywana
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
Jak widać powyżej, możemy dokonać kalibracji l jeden procedury przechowywanej z innej
Twój sp_test: Powrót 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
W swojej 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;
...
Tak, Łatwo jest sposób nazywamy funkcję wewnątrz sklepu procedura.
np. create user define Funkcja Age i użyj w zapytaniu wyboru.
select dbo.GetRegAge(R.DateOfBirth, r.RegistrationDate) as Age,R.DateOfBirth,r.RegistrationDate from T_Registration R
- 1. Wykonaj procedurę przechowywaną z pliku wsadowego
- 2. SQL: w klauzuli w procedurze przechowywanej: jak przekazywać wartości
- 3. Jak uruchomić procedurę przechowywaną w serwerze sql co godzinę?
- 4. Jak mogę edytować procedurę przechowywaną?
- 5. Dlaczego nie można użyć instrukcji INSERT EXEC w procedurze przechowywanej wywoływanej przez inną procedurę przechowywaną?
- 6. Jak dodać procedurę Przetrzymuj/zatrzymaj w SQL przechowywaną procedurę
- 7. Nazwa tabeli przechodzącej w procedurze przechowywanej sql
- 8. nazwa tabel i widoków w procedurze przechowywanej w serwerze sql 2005
- 9. Serwer SQL: zmienna opcjonalna w procedurze przechowywanej
- 10. Oświadczenia po END w procedurze przechowywanej
- 11. jak wywołać procedurę przechowywaną, gdzie klauzula SQL
- 12. Jak wywołać procedurę przechowywaną programu SQL Server z programu PowerShell?
- 13. Jak edytować procedurę przechowywaną w MySQL?
- 14. Jak wywołać procedurę przechowywaną na Laravel?
- 15. Wykonaj procedurę przechowywaną z wartościami tabeli jako parametr
- 16. Dodaj kolumnę i aktualizować go w tej samej procedurze przechowywanej w SQL Server 2008
- 17. MySQL: IF w procedurze przechowywanej
- 18. Tłumienie transakcji w procedurze przechowywanej
- 19. utwórz procedurę składowaną, jeśli nie istnieje w serwerze sql
- 20. Jak nadać wykonanie określonej określonej procedurze przechowywanej do użytkownika
- 21. Wybieranie i aktualizowanie w jednej przechowywanej procedurze
- 22. Jak umieścić procedurę przechowywaną w wybranej lokalizacji?
- 23. Jak wykonać procedurę przechowywaną w zadaniu agenta SQL?
- 24. Jak wywołać procedurę przechowywaną w JDBC
- 25. Jak wykonać procedurę przechowywaną wewnątrz kwerendy wyboru
- 26. Jak wywołać procedurę przechowywaną MySQL z Rails?
- 27. Instrukcja IF w klauzuli ORDER Klauzula instrukcji SELECT w procedurze przechowywanej serwera SQL
- 28. Domyślne wartości parametrów w przechowywanej procedurze SQL Server 2008
- 29. Zmienna liczba argumentów w procedurze przechowywanej PL/SQL
- 30. Zliczanie liczby usuniętych wierszy w procedurze przechowywanej programu SQL Server
Planujesz zrobić to w języku C# lub jako StoredProc na samym serwerze? – MethodMan
użyj słowa kluczowego 'exec'. – Matthew
Muszę wykonać w samym serwerze – Roys