请问c# 调用 开发 oracle 存储过程的问题
在oracle 9i 里写了一个存储过程,希望通过 2个参数,查询一些数据.
可是首先是存储过程编译不能通过. c#程序也就不能执行.
请大家帮忙看看.存储过程哪里错了,我是新手,不过项目紧,请大家帮帮我,多谢,多谢.
存储过程:
set serveroutput on
CREATE OR REPLACE PROCEDURE FindProduct
(
item_Serial_No IN varchar2(30),
item_Keya IN varchar2(25)
)
AS
BEGIN
SELECT
ITEM.ITEM_N,
ITEM.ITEM_SERIAL_NO,
ITEM.ITEM_KEYA,
TO_CHAR(ITEM.DATE_INSTALLED, 'DD.MM.YY') DATE_INSTALLED,
ITEM.ITEM_STATUS_SC,
PRODUCT.PRODUCT_SC,
PRODUCT.PROD_CLS_N,
SECTN_DEPT.SECTN_SC
FROM SA.ITEM ITEM,
SA.PRODUCT PRODUCT,
SA.SUPPLIER SUPPLIER,
SA.SECTN_DEPT SECTN_DEPT
WHERE (ITEM.ITEM_ID>0) AND
(ITEM.STAT_FLAG='n') AND
(ITEM.PRODUCT_ID=PRODUCT.PRODUCT_ID) AND
(SUPPLIER.SUPPLIER_ID=PRODUCT.SUPPLIER_ID) AND
(ITEM.SECTN_DEPT_ID=SECTN_DEPT.SECTN_DEPT_ID) AND
(NOT(ITEM.ITEM_SC LIKE '%-UB')) AND
(PRODUCT.PROD_CLS_SC='FIREWALL') AND (ITEM.ITEM_SERIAL_NO=item_Serial_No) OR (ITEM.ITEM_KEYA=item_Keya);
return;
END;
c# 程序
[WebMethod(Description="this is web metod to publish Firewall Product infotmation")]
public Product[] FindProduct(string item_Serial_No, string item_Keya)
{
return this.SearchProduct(item_Serial_No,item_Keya);
}
private Product[] SearchProduct(string item_Serial_No, string item_Keya)
{
ArrayList results = new ArrayList();
using (OleDbConnection dataConnection = new OleDbConnection(ConnectionString))
//数据库连接字串
using (OleDbCommand dataCommand = new OleDbCommand("FindProduct", dataConnection)) //存储函数名
{
//访问数据库前给dataCommand添加参数 变量来自存储过程里面
dataCommand.CommandType = CommandType.StoredProcedure;
dataCommand.Parameters.Add("@item_Serial_No",OleDbType.VarChar,30).Value= item_Serial_No; //("@p1", OleDbType.Char, 3).Value = "a";
dataCommand.Parameters.Add("@item_Keya",OleDbType.VarChar,25).Value= item_Keya;
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dataCommand);
DataTable data = new DataTable();
dataAdapter.Fill(data);
for (int i = 0; i < data.Rows.Count; i++)
{
results.Add(new Product(data.Rows[i]));
}
}
return (Product[])results.ToArray(typeof(Product));
}