我有一个带有2个参数(StudentID和CurrentSmester)作为输入的存储过程,并返回带有字段的表:
此存储过程由我办公室的另一个团队创建。我无法修改它,但同时我想在我的Webservice(我正在为android构建)中使用它来确保数据保持一致。
我的要求是获得:
我是否可以创建另一个存储过程,该过程将使用我提到的参数调用该存储过程,与课程表进行连接以获取课程标题。
这可能吗?如果是,请指导我完成实施。
感谢你和新年快乐!!
答案 0 :(得分:1)
创建一个新的存储过程,将现有存储过程中返回的结果插入到临时表中,将Course表与该临时表连接起来就可以了,
像这样......CREATE PROCEDURE usp_NewProc
@StudentID INT ,
@CurrentSmester INT
AS
BEGIN
SET NOCOUNT ON;
IF OBJECT_ID('tempdb..#temp', 'U') IS NOT NULL
DROP TABLE #temp
CREATE TABLE #temp
(
CourseCode [DataType],
UpdateType [DataType],
Update Id [DataType]
)
INSERT INTO #temp
EXEC existsting_proc @StudentID , @CurrentSmester
SELECT t.* , C.CourseTitle
FROM #temp t INNER JOIN CourseTable C on <join Condition>
IF OBJECT_ID('tempdb..#temp', 'U') IS NOT NULL
DROP TABLE #temp
END
答案 1 :(得分:0)
您可以将STORED PROCEDURE的结果插入到临时表(表变量或临时表)中,然后从该表中选择并加入Courses
表以检索标题。
示例代码
CREATE TABLE Courses(
CourseCode VARCHAR(50),
CourseName VARCHAR(250)
);
INSERT INTO Courses VALUES ('A','AA'), ('B','BB');
CREATE PROCEDURE OtherTeamsSP(
@StudentID INT,
@CurrentSmester INT
)
AS
SELECT 'A' CourseCode,
'FOO' UpdateType,
1 UpdateId;
CREATE PROCEDURE MyProcedure(
@StudentID INT,
@CurrentSmester INT
)
AS
CREATE TABLE #SPOutput(
CourseCode VARCHAR(50),
UpdateType VARCHAR(50),
UpdateId INT
)
INSERT INTO #SPOutput
EXEC OtherTeamsSP @StudentID, @CurrentSmester
SELECT *
FROM #SPOutput s INNER JOIN
Courses c ON s.CourseCode = c.CourseCode
DROP TABLE #SPOutput
调用新SP
EXEC MyProcedure 1,2
答案 2 :(得分:0)
- 第一个存储过程
CREATE PROCEDURE FirstSP
@MyFirstParam INT
AS
DECLARE @MyFirstParamValue INT
SELECT @MyFirstParamValue = @MyFirstParam * @MyFirstParam
RETURN (@MyFirstParamValue)
GO
- 第二个存储过程
CREATE PROCEDURE SecondSP
@SecondParam INT
AS
DECLARE @SecondParamValue INT
SELECT @SecondParamValue = @SecondParam * @SecondParam
RETURN (@SecondParamValue)
GO
- 将一个存储过程的结果作为另一个存储过程的参数传递
DECLARE @FirstValue INT, @SeondValue INT
- 第一个SP
EXEC @FirstValue = FirstSP 5
- 第二个SP
EXEC @SeondValue = SecondSP @FirstValue
SELECT @SeondValue SecondSP
GO
- 清理
DROP PROCEDURE FirstSP
DROP PROCEDURE SecondSP
GO