gpt4 book ai didi

c# - 使用 C# 从 DBMS_OUTPUT.GET_LINES() 获取输出

转载 作者:行者123 更新时间:2023-11-30 12:45:40 41 4
gpt4 key购买 nike

我知道如何从 DBMS_OUTPUT.GET_LINE() 获取输出。

可以引用http://oradim.blogspot.com.tr/2007/05/odpnet-tip-retrieving-dbmsoutput-text.html

在此页面上,获取输出形式 DBMS_OUTPUT.GET_LINES() 方法也使用 ODP.Net 进行了说明。有什么方法可以仅使用 ADO.NET 来管理它。

例如,我如何读取下面的所有输出

begin 
declare
stage number := 0;
begin
DBMS_OUTPUT.PUT_LINE('STARTING:');
INSERT INTO Country ( code, name) VALUES (1 , 'xxxx');
INSERT INTO City ( code, name) VALUES (1 , 'yyyy');
DBMS_OUTPUT.PUT_LINE('DONE:');
COMMIT;

EXCEPTION -- exception handlers begin
WHEN OTHERS THEN -- handles all other errors
DBMS_OUTPUT.PUT_LINE('Error occured, rollback...');
DBMS_OUTPUT.get_LINE(:1, :2);
stage := -1;
ROLLBACK;
end;
end;

输出应该是这样的:

STARTING
DONE

我有这个代码块,但它只返回第一行输出

using (OracleCommand cmd = cnn.CreateCommand())
{
OracleParameter status = new OracleParameter(":1", OracleType.VarChar, 32000);
p_line.Direction = ParameterDirection.Output;

OracleParameter line = new OracleParameter(":2", OracleType.Double);
p_status.Direction = ParameterDirection.Output;

cmd.CommandText = script;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(status);
cmd.Parameters.Add(line );
cmd.ExecuteNonQuery();

string status = status.Value.ToString();
string line = line.Value.ToString();
}

输出:

STARTING

最佳答案

DBMS_OUTPUT.GET_LINE 仅返回缓冲区的第一行(并将其删除)。如果您使用此方法,则需要为每一行调用一次。如果没有线路可用,则返回状态为 1。

关于c# - 使用 C# 从 DBMS_OUTPUT.GET_LINES() 获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23782842/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com