【问题标题】:How to write procedure with same no. of parameter in Oracle & SQL Server?如何编写具有相同编号的程序。 Oracle & SQL Server 中的参数?
【发布时间】:2013-04-19 12:12:40
【问题描述】:

SQL Server 存储过程:

CREATE PROC proc1
AS
SELECT ename FROM employee

Oracle 服务器存储过程:

CREATE OR REPLACE PROCEDURE proc1
(
cv_1 IN OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN cv_1 FOR
SELECT ename
FROM employee ;
END;

是否可以在 Oracle 和 SQL Server 中使用相同数量的参数和相同的支持数据类型编写此过程?

如果可能怎么办?那么如何从 oracle 和 SQL Server 调用呢?

【问题讨论】:

  • 为什么需要这个?你可以创建视图而不是过程吗?
  • 根据我的经验,你不会赢得 MS vs Oracle(w refcursor)“战斗”。我很想错,但我不这么认为。
  • 看看我写的这个例子。当 2 个 RDMBS 不完全重叠时,它提供了一个“安全阀”。 Aka,你应该能够让你的大部分代码相同,但如果你不能,有一种方法不是“如果 rdbmsType=rdbms.Oracle then”...... .....granadacoder.wordpress.com/2008/03/04/…

标签: sql sql-server oracle stored-procedures


【解决方案1】:

我们一直这样做,而且效果很好,但是我们的系统基于 ODBC,使用 ODBC“调用”语法来调用过程。我相信这个特性是在 Oracle 10 左右添加到 Oracle 驱动程序中的。

例如:

{CALL proc1} 或者如果 proc1 有非参考游标参数 {CALL proc1(parm1,parm2,parm3)}

Oracle 驱动程序自动执行将引用游标转换为结果集所需的操作。我相信存在/存在顺序依赖性,因为游标参数需要放在任何正常输入参数之后的最后一个位置,而不是您可以使用相同的代码返回结果集(使用完全相同的查询字符串来调用 SQL 之间的过程服务器和甲骨文)

【讨论】:

    猜你喜欢
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 2019-05-18
    • 1970-01-01
    相关资源
    最近更新 更多