如何在Exec存储过程中使用Where子句

用户名

我正在执行存储过程

表结构:

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 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子句请帮助我...

想象一下查询(粗略的期望)

exec GetEmployeeBasedOnCity 'Bombay' WHERE salary >5000

和古兹曼

最好的方法是独立于存储过程执行所需的查询。但是,如果必须使用现有存储过程而不进行任何更改,则可以将proc结果插入临时表,然后在该表上应用其他过滤器:

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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL Server where 子句在存储过程中使用 iif

如何用函数替换where子句并在存储过程中使用它?

在存储过程中使用WITH子句

如何在存储过程中使用复合pk?

如何在存储过程中使用类似语法

如何在SQLServer存储过程中使用case语句

如何在存储过程中使用oracle对象类型?

如何在存储过程中使用openquery?

如何在存储过程中使用数字参数?

如何在 SQL Server 存储过程中使用 if else

如何在存储过程中使用 DECLARE

如何在 Oracle 数据库中使用“Where”子句(存储过程)

如何在存储过程的WHERE子句中使用类型数据表

如何在 Oracle Sql 中的存储过程中传递 where in 子句值

如何在存储过程中的动态where子句中添加条件语句以测试特定值

Oracle 的 EXECUTE IMMEDIATE 在存储过程中使用 LIKE 子句

如何在Oracle中使用Cursor在存储过程中执行存储过程

存储过程中的条件WHERE子句

如何在EXEC存储过程中加密值?

Mysql 8如何在存储过程中使用if并使用cte

Snowflake 中的存储过程:在 where 子句中使用参数

当您有多个模式时,如何在存储过程中使用模式映射?

如何在MySQL * Prepared *存储过程中使用多个参数

如何在vb.net代码中使用SQL Server存储过程中的OUT参数

如何在T-SQL存储过程中使用可选参数?

如何在存储过程中使用sql查询停止重复数据?

如何在存储过程中使用多个select语句作为Resultset中的列

SQL Server:如何在存储过程中使用数据库名称作为参数?

如何在存储过程中使用 Show 命令 - 不工作