VS调用ORACLE存储过程

wljyhuzi 2011-09-22 11:34:02
我有这样一个存储过程,该过程针对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!

...全文
253 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
007-x 2011-09-22
  • 打赏
  • 举报
回复
不像是Oracle的问题, 你用VS要先open connection,new OracleParameter的时候最好再指定数据长度和传地方向(传进和传出)
wljyhuzi 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rihyou 的回复:]

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

一开始完全没想到是连接字符串的问题,经仔细检查,确实是将";"写成了"," 所以出现连接上的问题,多谢 rihyou 的指路啊,也要谢谢各位高手的指导,恩啊,结贴散分!
wljyhuzi 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rihyou 的回复:]

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

真是奇怪的很,连接部分的代码我上次专门测试过,都能用的,还能从数据库中读出数据来,今天再次测试的时候出现 ORA-12154: TNS:无法解析制定的连接标识符!怎么搞的啊~~~
wljyhuzi 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wzp1986 的回复:]

先配置oracle客户端连接
[/Quote]

可是我的ORACLE装在本机上的啊
胖胖_多多 2011-09-22
  • 打赏
  • 举报
回复
参考一下下面的博客:
NET oracle 各种连接字符串
http://www.cnblogs.com/allenlf81/articles/1174487.html
百战天王 2011-09-22
  • 打赏
  • 举报
回复
先配置oracle客户端连接
wljyhuzi 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 rihyou 的回复:]

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

能,只是会在控制台弹出 ORA-12154: TNS:无法解析制定的连接标识符!
胖胖_多多 2011-09-22
  • 打赏
  • 举报
回复
问楼主几个问题:
1,你现在的代码能不能执行
2,执行后出什么错误
wljyhuzi 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tx2730 的回复:]

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

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

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

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧