我正在尝试在 c# 中使用System.Data.OrcaleClient
. 在 oracle 中执行 PL-SQL 块时,使用dbms.ouput
.
我想dbms.ouput
在我的 C# 代码中得到那个“”结果。
请帮忙。
我正在尝试在 c# 中使用System.Data.OrcaleClient
. 在 oracle 中执行 PL-SQL 块时,使用dbms.ouput
.
我想dbms.ouput
在我的 C# 代码中得到那个“”结果。
请帮忙。
尝试使用包get_line
的功能dbms_output
。您可以创建一个过程来返回输出。像这样的东西(只是一个例子):
procedure call_with_output(p_output out varchar2) is
vret integer := 0;
vtxt varchar2(4000);
begin
dbms_output.enable;
-- here call code that generate lines
-- use the loop to retrieve info
while vret = 0 loop
dbms_output.get_line(vtxt, vret);
if vret = 0 then
if p_output is null then
p_output := vtxt;
else
p_output := p_output || chr(10) || vtxt;
end if;
end if;
end loop;
dbms_output.disable;
end;
我正在使用下一个方法:
private string GetDbmsOutputLine()
{
OracleCommand command = new OracleCommand
{
Connection = <connection>,
CommandText = "begin dbms_output.get_line(:line, :status); end;",
CommandType = CommandType.Text
};
OracleParameter lineParameter = new OracleParameter("line",
OracleType.VarChar);
lineParameter.Size = 32000;
lineParameter.Direction = ParameterDirection.Output;
command.Parameters.Add(lineParameter);
OracleParameter statusParameter = new OracleParameter("status",
OracleType.Int32);
statusParameter.Direction = ParameterDirection.Output;
command.Parameters.Add(statusParameter);
command.ExecuteNonQuery();
if (command.Parameters["line"].Value is DBNull)
return null;
string line = command.Parameters["line"].Value as string;
return line;
}
多次调用它以获得多字符串值,因为使用 System.Data.OracleClient 调用 dbms_output.get_lines 存在问题。