我将OleDbCommand的sql语句设置为:
declare a varchar2(100);
begin
select 'a' into a from dual;
end;请问我如何得到a的值?注:sql语句是oracle的
declare a varchar2(100);
begin
select 'a' into a from dual;
end;请问我如何得到a的值?注:sql语句是oracle的
解决方案 »
- 用C#做一个车牌识别系统
- 匿名事件中怎么返回值?
- C#如何操作同一个Excel book中Sheet的整体复制?在线。。
- 请问,如何重写GetHashCode方法
- 急!!! C# 怎样操作 postgreSQl数据库
- 求助C#(winform)获取当前IE地址栏的url
- 字符串类型转换为数值类型
- C#基础问题(关于类型转换),请大家帮忙啊!!
- 我在WevServices服务端使用了vjslib.dll这个.NET自带的动态库,可是把这个服务端部署到另一台机器却说没有找到,我搜索过是有的!!!
- c# 编写的sato条码打印程序,打印时会跳纸,少出来几个条码
- 高分求AJAX的入门级问题,关于超长DROPDOWNLIST
- 求 DataGridView 在每一列最后添加一个按钮代码
begin
select 想要查找的字段 as aaa from dual;
end;
“在此select语句中缺少into子句”
把查詢結果放在datatable中就可以了.
select 'a' into a from dual 是pl/sql語句。
但还是搞不定,各位帮帮忙吧!
begin
select 'a' into a from dual;
end; 是写在存储过程里的吗?是的话就用参数形式返回就是了,
不是的话直接写成:
select 'a' as a from dual
然后把查询结果放到datatable 里面就可以了
注意你使用的A是自定义变量,系统不会默认获得他
解决方法,
把上述方法存为Proc 然后把A作为输出参数
然后 CommandType改成存储过程,添加相应的输出参数,这样执行完后,
输出参数里面就是A的值。
不过不明白搂主那样的语句有什么意义??
你的结果不就是得到 ‘a’ ??
这里我视为举例
问题中我的确是举例,我的意思是想返回pRID的值,也就是当前插入记录的rowid,以便我在前台程序中定位,我现在的做法是用存储过程:
CREATE OR REPLACE PROCEDURE SP_INSERT_ZYD
(
pddh varchar2,
pzdr varchar2,
pRID out ROWID--行号(输出)
)
BEGIN
insert into ZYD (
ddh ,
zdr ) values (
pddh ,
pzdr ) returning ROWID INTO pRID;--将插入记录的ROWID赋值给RID
END;
但这么简单的insert语句的确不想写存储过程,所以想问一下,是否可以用OleDbCommand直接执行oracle语句块完成该功能,
如果可以的话,语句怎么写?如何调用?
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "BEGIN SELECT 'a' INTO :a FROM Dual; END;"; OracleParameter opara = new OracleParameter(":a", OracleType.VarChar,50);
opara.Direction = ParameterDirection.Output; cmd.Parameters.Add(opara); try
{
conn.Open();
cmd.ExecuteNonQuery();
Console.WriteLine(opara.Value);
}
catch (OracleException oEx)
{
Console.WriteLine(oEx.Message);
}
你自己再看看吧
报内存错误
vshost.exe--应用程序错误
PS:用System.Data.OracleClient 效率应该优于System.Data.OleDb
如果能够使用Oracle提供的ODP.NET 应该更好