たとえば、次のストアド プロシージャがあります。
create procedure MyStoredProcedure
as
begin
select *
from X,Y
where x.Id = Y.ID
end
return @table table(X.tTitle, Y.Description)
テーブルを返したいのですが、別のクエリでテーブルを使用する場合
たとえば、次のストアド プロシージャがあります。
create procedure MyStoredProcedure
as
begin
select *
from X,Y
where x.Id = Y.ID
end
return @table table(X.tTitle, Y.Description)
テーブルを返したいのですが、別のクエリでテーブルを使用する場合
これを試して:
create procedure MyStoredProcedure
as
begin
select X.*,Y.*
From X INNER JOIN Y ON X.Id=Y.ID
end
これにより、テーブル X と Y からすべてのデータが選択されます。
この方法を試してください:
CREATE PROCEDURE [dbo].[MyStoredProcedure]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @ID int
set @ID =(select ID From X INNER JOIN Y ON X.Id=Y.ID)
IF @ID > 0
BEGIN
return @table table(X.tTitle,Y.Description)
END
END
一時テーブルまたはテーブル変数を使用できます。このような:
CREATE TABLE #TABLE
(
COLUMN DEFINITION
)
INSERT INTO #TABLE
EXEC <YOUR STORED PROCEDURE>
SELECT *
FROM #TABLE
DROP TABLE #TABLE
ストアド プロシージャを一時テーブル内に挿入して、テーブルと同様に使用できるようにすることができます。一時テーブル名は # で始まる必要があることに注意してください。
このようなものは、あなたが最も書く
CREATE PROCEDURE <SP_Name>
AS
BEGIN
Select ......
End