gpt4 book ai didi

sql - Where 子句在 Oracle 中不起作用

转载 作者:行者123 更新时间:2023-12-01 14:23:23 25 4
gpt4 key购买 nike

我的存储过程是这样的:

CREATE OR REPLACE PROCEDURE     Proc_SearchRequests
(
RequestedBy LONG,
FromDate DATE DEFAULT NULL,
ToDate DATE DEFAULT NULL,
RequestedByDesignation VARCHAR2 DEFAULT NULL,
TypeId INT,
CurrentStatusId INT DEFAULT NULL,
AmountFrom LONG DEFAULT NULL,
AmountTo LONG DEFAULT NULL,
cur_ExcelOutput OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN cur_ExcelOutput FOR
SELECT cd.*,
emp.FIRSTNAME || ' ' || emp.LASTNAME AS ADDEDBYNAME
FROM
DETAILS cd
LEFT JOIN EMPLOYEES emp ON cd.ADDEDBY = emp.EMPLOYEEID
WHERE
cd.TYPEID=TypeId;

END;

我将执行程序传递为:
BEGIN
PROC_SEARCHREQUESTS (110, to_date ('2001-01-01', 'YYYY-MM-DD'), to_date ('9999-12-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS'), null, 2, 0, 0, 0, :cur_exceloutput$REFCURSOR);
END;

但是无论我作为 TypeId 传递什么,我都会得到完整的数据,而不是过滤后的数据。
如果我写“cd.TYPEID=2”,我会得到正确的结果,但在变量中传递值没有帮助。

有什么问题?..我错过了任何 Actor 或其他东西吗?

最佳答案

你有名字冲突。变量与列同名。
改变变量(参数)

TypeId INT,

进入
p_TypeId INT,

关于sql - Where 子句在 Oracle 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11624746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com