使用 [Oracle.DataAccess.Client] 执行块时,如何捕获 DBMS_OUTPUT.PUT_LINE 的输出?

ber*_*d_k 4 oracle ado.net

在我的 oracle 数据库中,如果有下表:

Create table Test_call_count (
    count number(10)
);
insert into Test_call_count values (0);
Run Code Online (Sandbox Code Playgroud)

现在我可以运行以下 PowerShell 脚本

if ($ora_loaded -eq $null)
{
    $ora_loaded = [System.Reflection.Assembly]::LoadWithPartialName("Oracle.DataAccess") 
}

$ConnectionString = "Data Source=YOUR_TNS;User ID=YOUR_ID;Password=YOUR_Password" 


function Execute-NonQuery
{
    param (
        $sql
    )

        $conn = new-object Oracle.DataAccess.Client.OracleConnection 
        $conn.ConnectionString = $ConnectionString 
        $cmd = new-object Oracle.DataAccess.Client.OracleCommand($sql,$conn)
        $conn.open()
        $cmd.ExecuteNonQuery()
        $conn.close()
}

Execute-NonQuery "begin update  Test_call_count set count = count + 1;DBMS_OUTPUT.PUT_LINE('Test...'); end;"
Run Code Online (Sandbox Code Playgroud)

查看我可以验证的数据库,每次调用都会增加计数。

但是有没有办法扩展它,以便我可以将数据发送到 DBMS_OUTPUT ?

Gar*_*ary 5

DBMS_OUTPUT.GET_LINES是以编程方式将它们取回的方法。以与任何其他过程相同的方式调用它。或者对于单行(这可能更容易编码)DBMS_OUTPUT.GET_LINE