【发布时间】:2013-06-24 00:03:50
【问题描述】:
我想创建并运行一个带有 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# 代码中调用它?
【问题讨论】:
-
是的,这是正确的,但删除提交。事务控制应由调用者管理。有关 C# stackoverflow.com/questions/3940587/… 的示例,请参见此处
-
我试过这个,但我得到源没有可运行的目标。当我运行这个 proc 时,程序也没有任何反应。示例目标表没有数据。
-
那么,请用最正确的细节更新您的问题。您从 C# 收到此错误“源没有可运行的目标”?
-
当我将过程作为脚本运行时,我在 SQL Developer 本身中收到此错误。用真实的程序编辑了问题
-
您在插入末尾缺少分号:WHERE (statementdate = s_date);
标签: c# sql oracle stored-procedures oracle-sqldeveloper