将数据列表存储到变量存储过程中
store list of data into variable store procedure
首先,如果这个问题对你来说看起来很简单,我很抱歉。因为,我不知道如何写 sp 我发布了这个问题:
基本上我想编写存储过程,我的用例是:
select 与 table
不同的 ID
select ID 来自 [table_name]
迭代获取的所有 ID
再次查询另一个 table 并将此 ID 作为参数
获取数据
任何人都可以建议如何实现这一目标吗?
SELECT 来自 [TABLE2] 的数据
WHERE TABLE2.TABLE1ID IN (SELECT 来自 [TABLE1] 的不同 ID)
使用内部查询概念或内部联接概念。
根据您的问题,我假设 Stored Procedure
.
不需要输入参数
CREATE PROCEDURE YourProcedureName --change it to your SP name
AS
BEGIN
SET NOCOUNT ON;
--Choose any approach that suits your case better from bellow and remove the rest approach once you finalize it
/*1st Approach*/
SELECT * FROM TABLEB
WHERE ID IN (SELECT DISTINCT ID FROM TABLEA)
/*2nd Approach*/
SELECT * FROM TABLEB B
JOIN TABLEA A
ON B.Id = A.Id
/*3rd Approach which you are expeting*/
--Implementing CURSOR
DECLARE @Id INT
DECLARE Table_Cursor CURSOR FOR
SELECT
DISTINCT Id FROM TABLEA
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @Id
WHILE @@FETCH_STATUS = 0
BEGIN
-- you can insert it into a table if you need
SELECT * FROM TABLEB WHERE Id = @Id
FETCH NEXT FROM Table_Cursor INTO @Id
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
END
GO
首先,如果这个问题对你来说看起来很简单,我很抱歉。因为,我不知道如何写 sp 我发布了这个问题:
基本上我想编写存储过程,我的用例是:
select 与 table
不同的 IDselect ID 来自 [table_name]
迭代获取的所有 ID
再次查询另一个 table 并将此 ID 作为参数
获取数据
任何人都可以建议如何实现这一目标吗?
SELECT 来自 [TABLE2] 的数据 WHERE TABLE2.TABLE1ID IN (SELECT 来自 [TABLE1] 的不同 ID)
使用内部查询概念或内部联接概念。
根据您的问题,我假设 Stored Procedure
.
CREATE PROCEDURE YourProcedureName --change it to your SP name
AS
BEGIN
SET NOCOUNT ON;
--Choose any approach that suits your case better from bellow and remove the rest approach once you finalize it
/*1st Approach*/
SELECT * FROM TABLEB
WHERE ID IN (SELECT DISTINCT ID FROM TABLEA)
/*2nd Approach*/
SELECT * FROM TABLEB B
JOIN TABLEA A
ON B.Id = A.Id
/*3rd Approach which you are expeting*/
--Implementing CURSOR
DECLARE @Id INT
DECLARE Table_Cursor CURSOR FOR
SELECT
DISTINCT Id FROM TABLEA
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @Id
WHILE @@FETCH_STATUS = 0
BEGIN
-- you can insert it into a table if you need
SELECT * FROM TABLEB WHERE Id = @Id
FETCH NEXT FROM Table_Cursor INTO @Id
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
END
GO