如何在Oracle&;中使用相同数量的参数编写过程;SQL Server?

如何在Oracle&;中使用相同数量的参数编写过程;SQL Server?,sql,sql-server,oracle,stored-procedures,Sql,Sql Server,Oracle,Stored Procedures,SQL Server存储过程: CREATE PROC proc1 AS SELECT ename FROM employee CREATE OR REPLACE PROCEDURE proc1 ( cv_1 IN OUT SYS_REFCURSOR ) AS BEGIN OPEN cv_1 FOR SELECT ename FROM employee ; END; Oracle Server存储过程: CREATE PROC proc1 AS SELECT ename FROM emplo

SQL Server存储过程:

CREATE PROC proc1
AS
SELECT ename FROM employee
CREATE OR REPLACE PROCEDURE proc1
(
cv_1 IN OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN cv_1 FOR
SELECT ename
FROM employee ;
END;
Oracle Server存储过程:

CREATE PROC proc1
AS
SELECT ename FROM employee
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调用呢?

我们一直都在这样做,而且效果很好,但是我们的系统基于ODBC,使用ODBC“调用”语法调用过程。我相信这项功能是大约在Oracle 10中添加到Oracle驱动程序中的

例如:

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


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

为什么需要这样做?你能创建视图而不是过程吗?以我的经验,你不会赢得微软vs甲骨文的“战斗”。我很想犯错,但我不这么认为。看看我写的这个例子。它提供了一个“安全阀”,当2 RDMBS'不能完美重叠时。Aka,您应该能够获得大部分相同的代码,但是如果您不能,有一种方法不是“如果rdbmsType=rdbms.Oracle那么”。。。。。。。。。。。。。。