C#中的Oracle连接和运行脚本
Oracle connection and running script in c#
我得到了以下代码
using (OracleConnection con = new OracleConnection())
{
con.ConnectionString = My_connection_string;
FileInfo file = new FileInfo(Server.MapPath("~/Scripts/call_proc.sql"));
string script = file.OpenText().ReadToEnd();
con.Open();
OracleCommand cmd = new OracleCommand(script, con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.BindByName = true;
cmd.ExecuteNonQuery();
}
call_proc代码是
//返回你好
set serveroutput on;
begin
test.tmp_test();
end;
当我尝试运行上面的代码时,出现以下错误。
ORA-06550: line 1, column 11: PL/SQL: ORA-00922: missing or invalid
option ORA-06550: line 1, column 7:
您可以只使用 OracleCommand
和过程名称 For sample
尝试这样的事情:
using (OracleConnection con = new OracleConnection())
{
con.ConnectionString = My_connection_string;
con.Open();
OracleCommand cmd = new OracleCommand("temp.tmp_test", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.BindByName = true;
var result = cmd.ExecuteScalar();
if (result != null)
{
string stringResult = result.ToString();
// show result here
}
}
如果要获取第一列和第一行,可以使用 command.ExecuteScalar()
,它将 return 一个 object
实例。
如果您想读取多行和多列,您也可以使用 command.ExecuteDataReader()
中的 Oracle Data Reader(当您想操作 select
查询的输出时很常见)。
我得到了以下代码
using (OracleConnection con = new OracleConnection())
{
con.ConnectionString = My_connection_string;
FileInfo file = new FileInfo(Server.MapPath("~/Scripts/call_proc.sql"));
string script = file.OpenText().ReadToEnd();
con.Open();
OracleCommand cmd = new OracleCommand(script, con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.BindByName = true;
cmd.ExecuteNonQuery();
}
call_proc代码是 //返回你好
set serveroutput on;
begin
test.tmp_test();
end;
当我尝试运行上面的代码时,出现以下错误。
ORA-06550: line 1, column 11: PL/SQL: ORA-00922: missing or invalid option ORA-06550: line 1, column 7:
您可以只使用 OracleCommand
和过程名称 For sample
尝试这样的事情:
using (OracleConnection con = new OracleConnection())
{
con.ConnectionString = My_connection_string;
con.Open();
OracleCommand cmd = new OracleCommand("temp.tmp_test", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.BindByName = true;
var result = cmd.ExecuteScalar();
if (result != null)
{
string stringResult = result.ToString();
// show result here
}
}
如果要获取第一列和第一行,可以使用 command.ExecuteScalar()
,它将 return 一个 object
实例。
如果您想读取多行和多列,您也可以使用 command.ExecuteDataReader()
中的 Oracle Data Reader(当您想操作 select
查询的输出时很常见)。