+ -
当前位置:首页 → 问答吧 → VS调用ORACLE存储过程

VS调用ORACLE存储过程

时间:2011-09-22

来源:互联网

我有这样一个存储过程,该过程针对SCOTT用户中的emp表(雇员信息表,有雇员名、工资等信息),根据过程中传入的两个参数(spName名字,薪水newSal),通过查询将表中与参数“spName 名字”相同的雇员名的薪水更改为参数中的薪水newSal的值
create or replace procedure sp_pro8 (spName varchar2,newSal number)is
begin
update emp set sal=newSal where ename=spName;
end;
现在我希望通过VS平台调用这个存储过程,将emp表中的SCOTT雇员的薪水更改为100块,代码如下:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
using System.Data;

namespace procedure1
{
  class Program
  {
  static void Main(string[] args)
  {
  string connstring = getConnectionstring();
  using (OracleConnection connection = new OracleConnection(connstring))
  {
  OracleCommand command = connection.CreateCommand();
  command.CommandText = "sp_pro8";
  command.CommandType = CommandType.StoredProcedure;

  OracleParameter[] parameters ={
                   new OracleParameter("spName",OracleType.NVarChar, 20),
                   new OracleParameter("newSal",OracleType.Number )                        };
  parameters[0].Value = "SCOTT";
  parameters[1].Value = 100;
  try
  {
  foreach (OracleParameter parameter in parameters)
  {
  command.Parameters.Add(parameter);
  }
  command.ExecuteNonQuery();
  connection.Close();
  }
  catch (Exception e)
  {
  throw e;
  }
  }

  }

  private static string getConnectionstring()
  {
  return "Data Source=ORCL, UserID=scott, Password=m123";
  }
  }
}

请各位高手帮忙看看,小弟初入ORACLE,对着程序看了半天,实在不知道该如何修改,先谢谢各位大侠啦!
3Q3Q3Q3Q3Q3Q!

作者: wljyhuzi   发布时间: 2011-09-22

不像是Oracle的问题, 你用VS要先open connection,new OracleParameter的时候最好再指定数据长度和传地方向(传进和传出)

作者: tx2730   发布时间: 2011-09-22

引用 1 楼 tx2730 的回复:

不像是Oracle的问题, 你用VS要先open connection,new OracleParameter的时候最好再指定数据长度和传地方向(传进和传出)


确实是没有 open 语句,谢谢哈,但是我加入后(加在command.ExecuteNonQuery();语句之前)它又会提示我
无法解析制定的连接标示符,这是为什么呢?
我已经加入number变量的size为7,然后加入了两个参数都是传入的!

这是我弄的第一个VS+ORACLE 程序,我就想把它调试好看他们是怎么一起工作的,谢谢哈!

作者: wljyhuzi   发布时间: 2011-09-22

问楼主几个问题:
1,你现在的代码能不能执行
2,执行后出什么错误

作者: rihyou   发布时间: 2011-09-22

引用 3 楼 rihyou 的回复:

问楼主几个问题:
1,你现在的代码能不能执行
2,执行后出什么错误


能,只是会在控制台弹出 ORA-12154: TNS:无法解析制定的连接标识符!

作者: wljyhuzi   发布时间: 2011-09-22

先配置oracle客户端连接

作者: wzp1986   发布时间: 2011-09-22

参考一下下面的博客:
NET oracle 各种连接字符串
http://www.cnblogs.com/allenlf81/articles/1174487.html

作者: rihyou   发布时间: 2011-09-22

引用 5 楼 wzp1986 的回复:

先配置oracle客户端连接


可是我的ORACLE装在本机上的啊

作者: wljyhuzi   发布时间: 2011-09-22

引用 6 楼 rihyou 的回复:

参考一下下面的博客:
NET oracle 各种连接字符串
http://www.cnblogs.com/allenlf81/articles/1174487.html


真是奇怪的很,连接部分的代码我上次专门测试过,都能用的,还能从数据库中读出数据来,今天再次测试的时候出现 ORA-12154: TNS:无法解析制定的连接标识符!怎么搞的啊~~~

作者: wljyhuzi   发布时间: 2011-09-22

热门下载

更多