2013-06-26 6 views
0

Я хочу создать и запустить хранимую процедуру с параметром IN, который является датой. После того, как дата прошла в процедуру, я хочу запустить простой оператор select для передачи всех данных в таблицу назначения.Вызовите хранимую процедуру с параметром даты из C#

Если предположить, что исходная таблица и таблицы назначения точно такие же, я использую:

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#?

+0

Да, это правильно, но удалите фиксацию. Управление транзакциями должно управляться вызывающим абонентом. См. Здесь для exampel для C# http://stackoverflow.com/questions/3940587/calling-oracle-stored-procedure-from-c-net – OldProgrammer

+0

Я пробовал это, но я получаю, что источник не имеет runnable target.Also из программы когда я запускаю этот процесс, ничего не происходит. примерная таблица назначения не имеет данных. – user2315840

+0

Ну, пожалуйста, обновите свой вопрос с помощью самых правильных деталей. Вы получаете эту ошибку, «источник не имеет runnable target» из C#? – OldProgrammer

ответ

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 

, что ваш фактический запрос?

0

Кажется, ребята ответили на ваш первый вопрос о процедуре.

Чтобы позвонить ему из .Net/C#, вы можете использовать Oracle Data Provider .Net (ODP.Net) свой бесплатный API от Oracle, вы можете найти его here.

0

Решенный! Проблема заключалась не в том, как я написал сохраненную процедуру. но в самом SQLDeveloper есть ошибка. когда я создал хранимую процедуру и скомпилировал ее. Он выполнил, но не выполнил. Я получаю «Источник не имеет бегущей цели». Я просто закрыл приложение и перезапустил его, и процедура была выполнена без каких-либо проблем. Итак, любой, у кого такая же проблема. Просто перезагрузка приложения может решить вашу проблему в ожидании того, что ваша процедура компилируется.