如何创建带参数的 Oracle 存储过程?
Posted
技术标签:
【中文标题】如何创建带参数的 Oracle 存储过程?【英文标题】:How to create an Oracle stored procedure with a parameter? 【发布时间】:2015-03-24 16:45:09 【问题描述】:我是 SQL 新手,正在尝试在 Oracle 数据库中创建存储过程。 SPROC 需要两个日期参数(from_date 和 to_date)才能运行我的报告。也许我将此与 SQL Server 代码混淆了。
我的代码如下所示:
CREATE PROCEDURE uSP_RevPerSalesman
@from_date DATE
@to_date DATE
AS
BEGIN
SELECT DISTINCT
C.CUSTOMER_CODE
, MS.SALESMAN_NAME
, SUM(C.REVENUE_AMT)
FROM
C_REVENUE_ANALYSIS C
, M_CUSTOMER MC
, M_SALESMAN MS
WHERE
C.CUSTOMER_CODE = MC.CUSTOMER_CODE AND
MC.SALESMAN_CODE = MS.SALESMAN_CODE AND
MC.COMP_CODE = 'W1' AND
MS.COMP_CODE = '00' AND
C.REVENUE_DATE >= :from_date AND
C.REVENUE_DATE <= :to_date
GROUP BY
C.CUSTOMER_CODE, MS.SALESMAN_NAME
ORDER BY
C.CUSTOMER_CODE
END
GO
我在运行此代码时收到一条错误消息。我得到的错误信息是:
ERROR ORA-00900: 无效的 SQL 语句
当我只运行 SELECT 代码时,它可以工作并给我正确的结果。我似乎无法将它变成 SPROC。
【问题讨论】:
【参考方案1】:删除在 Oracle 中无效的 GO
。请尝试在末尾使用分号或 /,具体取决于您在何处运行。
【讨论】:
感谢您回复巴雷特。我在最后删除了“GO”,但那是 NoGo。仍然是“无效的 SQL 语句”。 -- 我正在使用 MS Visual Studio 2012 Shell 来运行它。以上是关于如何创建带参数的 Oracle 存储过程?的主要内容,如果未能解决你的问题,请参考以下文章