0

我想创建并运行一个带有 IN 参数的存储过程,该参数是一个日期。一旦将日期传递到过程中,我想运行一个简单的选择语句将所有数据传输到目标表中。

假设源表和目标表完全相同,我正在使用:

CREATE OR REPLACE procedure Test ( start_date in data ) as

Begin

   insert into Destination_table (column 1 , column2, date_Column)
   Select column1, column 2, Date_column 
     from Source_table 
    Where date_column = Start_date;
Commit;
End Test;

编辑...

CREATE OR REPLACE PROCEDURE Procedure_TEST ( s_date IN date ) AS
BEGIN

   INSERT INTO Ps_dest_table ( Name, Salary, STATEMENTDATE )
   SELECT Name, Salary, STATEMENTDATE 
     FROM ps_Source_table 
    WHERE (statementdate = s_date)                              

END procedure_TEST;

这是这样做的正确方法吗?还是我错过了什么?如何从 C# 代码中调用它?

4

3 回答 3

0

这看起来是正确的。不过,在您的示例中,您的间距存在一些不一致之处。

insert into Destination_table (column 1 , column2, date_Column)

应该:

insert into Destination_table (column1 , column2, date_Column)

Select column1, column 2, Date_column from Source_table 

应该:

Select column1, column2, Date_column from Source_table 

你的实际查询是什么?

于 2013-06-26T18:08:22.293 回答
0

解决了!问题不在于我如何编写存储过程。但是 SQLDeveloper 本身存在一个错误。当我创建存储过程并编译它时。它遵守但没有运行。我得到“源没有可运行的目标”。我只是关闭了应用程序并重新启动它,程序执行没有任何问题。所以,任何有同样问题的人。只是,重新启动应用程序可以解决您的程序编译未决的问题。

于 2013-07-02T13:38:41.163 回答
0

看来这些家伙回答了你关于程序的第一个问题。

要从 .Net/C# 调用它,您可以使用 Oracle Data Provider .Net (ODP.Net),它是 Oracle 提供的免费 API,您可以在此处找到它。

于 2013-06-26T18:37:42.863 回答