【发布时间】:2015-11-30 22:55:09
【问题描述】:
我正在尝试从 SQL Server 迁移到 Oracle 数据库。我必须将我的存储过程从 SQL Server 移动到 Oracle,它使用 INNER JOIN 从多个表中进行查询。我想在这里澄清几件事。
SQL Server 存储过程:
[dbo].[QueryAll]
@score1_min int = 0,
@score1_max int = 999,
@type1 varchar (1) = '%',
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM FUNIJ1 uni
INNER JOIN CAPI99 api99 on api99.application_id = uni.application_id
INNER JOIN CAPI41 api41 on api41.application_id = uni.application_id
INNER JOIN CAPI10 api10 on api10.application_id = uni.application_id
WHERE
api10.score1 BETWEEN @score1_min AND @score1_max
AND uni.type1 LIKE @type1
END
还有我的 Oracle 程序
create or replace PROCEDURE QUERYALL
(
SCORE1_MIN IN NUMBER DEFAULT 0
, SCORE1_MAX IN NUMBER DEFAULT 999
, TYPE IN VARCHAR2
)
AS
BEGIN
SELECT *
FROM FUNIJ1 uni
INNER JOIN CAPI99 on CAPI99.APPLICATION_ID = uni.APPLICATION_ID
INNER JOIN CAPI41 on CAPI41.APPLICATION_ID = uni.APPLICATION_ID
INNER JOIN CAPI10 on CAPI10.APPLICATION_ID = uni.APPLICATION_ID
WHERE
CAPI10.score1 BETWEEN score1_min AND score1_max
AND uni.type LIKE type
END REPOQUERYALL ;
我使用 % 作为默认查询参数来返回 SQL Server 中的所有值 在没有用户输入的情况下。我不确定我必须在 Oracle 中使用什么作为默认值才能全部返回。
列表项 Oracle 在
SELECT *之后使用新术语 INTO。我不确定在这种情况下是否需要使用 INTO 或光标。我不知道哪个适合这里以及如何使用它。如果有人可以将此 SQL Server 传输到 Oracle 过程,我将不胜感激。我不确定我的 Oracle 是否 100% 正确。
【问题讨论】:
标签: sql-server oracle stored-procedures oracle11g