例如我有这个存储过程:
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)
我想要返回表以及在另一个查询中使用表时
存储过程不能1组合成其他查询作为行的来源 - 是否有理由必须是存储过程?用户定义的函数具有与存储过程几乎相同的可表达性,并且可以FROM
很容易地成为另一个查询的子句中的行源。
就像是:
create function MyFunction()
returns table
as
return (select X.tTitle,Y.Description
from X
inner join Y
on x.Id = Y.ID)
1忽略INSERT
……EXEC
因为它对合成没有任何作用,而且OPENROWSET
并不总是可行的方法。
试试这个:
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
你可以简单地创建一个Procedure
然后,试试这个:
CREATE PROCEDURE MyStoredProcedure
AS
BEGIN
SELECT tTitle ,
Description
FROM X
JOIN Y ON Y.ID = X.ID
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