Как я могу выполнить хранимую процедуру в другой хранимой процедуре на SQL-сервере? Как передать параметры второй процедуры?Выполнение хранимой процедуры в другой хранимой процедуре на сервере SQL
ответ
Вы можете вызвать определенные пользователем функции в хранимой процедуре поочередно
это может решить вашу проблему вызвать хранимую процедуру,
Да, вы можете сделать это так:
BEGIN
DECLARE @Results TABLE (Tid INT PRIMARY KEY);
INSERT @Results
EXEC Procedure2 [parameters];
SET @total 1;
END
SELECT @total
If вы только хотите выполнить некоторые конкретные операции по вашему второму SP и не требовать значений обратно от SP, а просто выполните:
Exec secondSPName @anyparams
Иначе, если вам нужны значения, возвращаемые вашим вторым SP внутри вашего первого, затем создайте временную переменную таблицы с равным количеством столбцов и с тем же определением возврата столбца вторым SP. Тогда вы можете получить эти значения в первом SP как:
Insert into @tep_table
Exec secondSPName @anyparams
Update:
Чтобы передать параметр ко второму зр, сделайте следующее:
Declare @id ID_Column_datatype
Set @id=(Select id from table_1 Where yourconditions)
Exec secondSPName @id
Update 2:
Предположим, что ваш второй sp возвращает Id
и Name
где тип id
- int
и name
- varchar(64)
тип.
теперь, если вы хотите, чтобы выбрать эти значения в первом зре затем создать временные table
переменного и вставки значения в нем:
Declare @tep_table table
(
Id int,
Name varchar(64)
)
Insert into @tep_table
Exec secondSP
Select * From @tep_table
Это вернет вас значение, возвращаемое второе SP.
Надеюсь, это ясно, все ваши сомнения.
tanx .. ya i нужны значения, возвращаемые вторым sp внутри первого. bt параметр, который мне нужно передать, является выходом первой процедуры. Является ли это возможным.? См. Этот пример. SP1 Выберите идентификатор из таблицы_1. возможно ли передать этот идентификатор в качестве параметра второй процедуры.? – Roys
Да, это возможно, но сначала вам нужно сохранить этот идентификатор в переменной, а затем передать его второму sp. См. Обновленный ответ. –
Вышеуказанные шаги сработали.tanx. Как я могу получить выходное значение второго Sp из первого? – Roys
Предположим, у вас есть одна хранимая процедура, как эта Первая хранимая процедура
:
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
Теперь вы хотите, чтобы вызвать эту процедуру из другой хранимой процедуры вроде как ниже
Вторая хранимая процедура
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
Как вы видели выше, мы можем л одна хранимая процедура с другого
Ваш sp_test: Возвращение 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
В вашем 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;
...
Да, Его легко, как мы называем функцию внутри магазина процедура.
, например. создайте пользователя, определите функцию Возраста и используйте в выбранном запросе.
select dbo.GetRegAge(R.DateOfBirth, r.RegistrationDate) as Age,R.DateOfBirth,r.RegistrationDate from T_Registration R
- 1. Выполнение хранимой процедуры в другой хранимой процедуре в Oracle
- 2. Выполнение хранимой процедуры на сервере SQL
- 3. Выполнение хранимой процедуры в хранимой процедуре
- 4. Выполнение хранимой процедуры из другой хранимой процедуры
- 5. Вызов хранимой процедуры в хранимой процедуре
- 6. Вызов хранимой процедуры в хранимой процедуре
- 7. записи хранимой процедуры внутри другой хранимой процедуры
- 8. Oracle - вызов хранимой процедуры в цикле в другой хранимой процедуре
- 9. Вызов хранимой процедуры из другой хранимой процедуры
- 10. Присвоить результаты хранимой процедуры в переменную в другой хранимой процедуре
- 11. Подвести информацию из одной хранимой процедуры в другой хранимой процедуре
- 12. mysql - таблица возврата из хранимой процедуры в другой хранимой процедуре
- 13. использовать результат набора хранимой процедуры mysql в другой хранимой процедуре
- 14. Получение хранимой процедуры mySQL приводит к другой хранимой процедуре
- 15. Сохранение вывода хранимой процедуры в переменную при вызове хранимой процедуры в другой хранимой процедуре
- 16. Выполнение хранимой процедуры сервера Sql
- 17. Ошибка Выполнение хранимой процедуры
- 18. Выполнение хранимой процедуры в другой хранимой процедуре с помощью Select Query
- 19. Выполнение вызова хранимой процедуры SSIS
- 20. Выполнение хранимой процедуры как другой логин
- 21. отменить выполнение хранимой процедуры
- 22. Вызов хранимой процедуры из другой хранимой процедуры
- 23. Выполнение FuncView в хранимой процедуре
- 24. Шифрование хранимой процедуры на сервере Sql 2016
- 25. Удаление хранимой процедуры на сервере SQL
- 26. Вызов хранимой процедуры из другой хранимой процедуры SQL Server
- 27. Многократно выполнение хранимой процедуры
- 28. Запланированный запуск хранимой процедуры на сервере SQL
- 29. Выполнение хранимой процедуры из C#
- 30. Создание хранимой процедуры для возврата строки другой хранимой процедуры
Планируете ли вы сделать это на C# или как StoredProc на самом Сервере? – MethodMan
используйте ключевое слово 'exec'. – Matthew
Мне нужно выполнить в самом Сервере – Roys