我的存储过程是这样的:凡在甲骨文
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”我得到正确的结果,但传递值varible不起作用。
什么可能是错的?我是否缺少任何铸件或其他东西?
这实际上工作......但我不明白原因......什么是这个“p_”? – user1181942 2012-07-24 05:45:40
好的我知道了..我不知道变量名称不能与列名称相同..谢谢..这增加了我的知识.. – user1181942 2012-07-24 05:47:37
p来自参数。是一个命名约定。我刚刚更改了变量的名称。 – 2012-07-24 05:48:23