如何从SQL Server中的存储过程查询?

Pat*_*ins 3 sql sql-server

假设我有一个简单的存储过程:

ALTER PROCEDURE [dbo].[myProc]
AS
BEGIN
   SELECT * FROM myTable
END
Run Code Online (Sandbox Code Playgroud)

如何在Microsoft SQL Server Management Studio中对存储过程执行WHERE语句?像这样的东西:

SELECT * FROM myProc WHERE x = 'a'; -- But that doesn't work...
Run Code Online (Sandbox Code Playgroud)

Hyt*_*oth 8

听起来你正试图制作一个"动态"的存储过程.

你可能想做的事情是:

1)将存储过程的内容插入临时表

2)使用动态sql将where条件应用于该临时表.

就像是:

declare @as_condition varchar(500); --Your condition

create table #a
(
id bigint
)

insert into #a
execute sproc

declare @ls_sql varchar(max);
set @ls_sql = "select * from #a where " + @as_condition;
execute (@ls_sql);
Run Code Online (Sandbox Code Playgroud)