如何在 Exec 存储过程中使用 Where 子句
How to use Where Clause in Exec Stored Procedure
我有一个存储过程
Table结构:
CREATE TABLE employee(
id INTEGER NOT NULL PRIMARY KEY,
first_name VARCHAR(10),
last_name VARCHAR(10),
salary DECIMAL(10,2),
city VARCHAR(20),
)
向员工添加一些数据Table:
INSERT INTO employee VALUES (1, 'Karvendhan', 'Palani',4789,'Agra');
GO
INSERT INTO employee VALUES (2, 'Bala', 'Manigandan',8789,'Bombay');
GO
INSERT INTO employee VALUES (3, 'Raj' , 'Kishore', 5567,'London');
GO
INSERT INTO employee VALUES (4, 'Prayag', 'Pavithran', 4467,'Bombay');
GO
INSERT INTO employee VALUES (5, 'Selva', 'Kumar', 3456, 'Bombay');
GO
select * from employee;
我的存储过程:
CREATE PROCEDURE GetEmployeeBasedOnCity
(
@city VARCHAR(20)
)
AS
BEGIN
select * from employee where city = @city
END;
我正在执行存储过程:exec GetEmployeeBasedOnCity 'Bombay';
我得到输出:
id first_name last_name salary city
-----------------------------------------------------------------
2 Bala Manigandan 8789.00 Bombay
4 Prayag Pavithran 4467.00 Bombay
5 Selva Kumar 3456.00 Bombay
我需要在 exec GetEmployeeBasedOnCity 'Bombay';
时放置 where 子句
不在存储过程中。请帮助我...
Imagine the Query (Rough Expectation)
exec GetEmployeeBasedOnCity 'Bombay' WHERE salary >5000
最好的方法是独立于存储过程执行所需的查询。但是,如果您必须不加更改地使用现有存储过程,则可以将 proc 结果插入到临时 table 中,然后在该 table:
上应用其他过滤器
CREATE TABLE #employee(
id INTEGER NOT NULL PRIMARY KEY,
first_name VARCHAR(10),
last_name VARCHAR(10),
salary DECIMAL(10,2),
city VARCHAR(20),
);
INSERT INTO #employee
EXEC GetEmployeeBasedOnCity 'Bombay';
SELECT *
FROM #employee
WHERE salary > 5000;
我有一个存储过程
Table结构:
CREATE TABLE employee(
id INTEGER NOT NULL PRIMARY KEY,
first_name VARCHAR(10),
last_name VARCHAR(10),
salary DECIMAL(10,2),
city VARCHAR(20),
)
向员工添加一些数据Table:
INSERT INTO employee VALUES (1, 'Karvendhan', 'Palani',4789,'Agra');
GO
INSERT INTO employee VALUES (2, 'Bala', 'Manigandan',8789,'Bombay');
GO
INSERT INTO employee VALUES (3, 'Raj' , 'Kishore', 5567,'London');
GO
INSERT INTO employee VALUES (4, 'Prayag', 'Pavithran', 4467,'Bombay');
GO
INSERT INTO employee VALUES (5, 'Selva', 'Kumar', 3456, 'Bombay');
GO
select * from employee;
我的存储过程:
CREATE PROCEDURE GetEmployeeBasedOnCity
(
@city VARCHAR(20)
)
AS
BEGIN
select * from employee where city = @city
END;
我正在执行存储过程:exec GetEmployeeBasedOnCity 'Bombay';
我得到输出:
id first_name last_name salary city
-----------------------------------------------------------------
2 Bala Manigandan 8789.00 Bombay
4 Prayag Pavithran 4467.00 Bombay
5 Selva Kumar 3456.00 Bombay
我需要在 exec GetEmployeeBasedOnCity 'Bombay';
时放置 where 子句
不在存储过程中。请帮助我...
Imagine the Query (Rough Expectation)
exec GetEmployeeBasedOnCity 'Bombay' WHERE salary >5000
最好的方法是独立于存储过程执行所需的查询。但是,如果您必须不加更改地使用现有存储过程,则可以将 proc 结果插入到临时 table 中,然后在该 table:
上应用其他过滤器CREATE TABLE #employee(
id INTEGER NOT NULL PRIMARY KEY,
first_name VARCHAR(10),
last_name VARCHAR(10),
salary DECIMAL(10,2),
city VARCHAR(20),
);
INSERT INTO #employee
EXEC GetEmployeeBasedOnCity 'Bombay';
SELECT *
FROM #employee
WHERE salary > 5000;