我有这样一个存储过程,该过程针对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!

解决方案 »

  1.   

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

  2.   


    确实是没有 open 语句,谢谢哈,但是我加入后(加在command.ExecuteNonQuery();语句之前)它又会提示我
    无法解析制定的连接标示符,这是为什么呢?
    我已经加入number变量的size为7,然后加入了两个参数都是传入的!这是我弄的第一个VS+ORACLE 程序,我就想把它调试好看他们是怎么一起工作的,谢谢哈!
      

  3.   


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

  4.   

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

  5.   


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

  6.   


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

  7.   


    一开始完全没想到是连接字符串的问题,经仔细检查,确实是将";"写成了","  所以出现连接上的问题,多谢 rihyou 的指路啊,也要谢谢各位高手的指导,恩啊,结贴散分!