使用C#中的date参数调用存储过程

时间:2013-06-26 17:46:47

标签: c# sql oracle stored-procedures oracle-sqldeveloper

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

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

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#代码中调用它?

3 个答案:

答案 0 :(得分: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 

您的实际查询是什么?

答案 1 :(得分:0)

似乎这些人回答了你关于这个程序的第一个问题。

要从.Net / C#调用它,您可以使用Oracle Data Provider .Net(ODP.Net)作为Oracle的免费API,您可以找到它here

答案 2 :(得分:0)

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