我想使用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#代码中调用它?
答案 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没有可运行的目标。”我只是关闭了应用程序并重新启动它并执行该过程没有任何问题。所以,任何有同样问题的人。只是,重新启动应用程序可以解决您的问题,等待您的过程编译。