sql >> Databáze >  >> RDS >> Oracle

Jak získat hodnotu dbms.output vrácenou blokem PL-SQL v C#

Používám následující metodu:

    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;
    }

Zavolejte jej několikrát, abyste získali víceřetězcovou hodnotu, protože při volání dbms_output.get_lines pomocí System.Data.OracleClient dochází k problémům.




  1. Proč zvolit klauzuli Top by mohlo vést k dlouhodobým nákladům

  2. Proč podmínky CROSS JOIN nefungují v klauzuli 'ON', pouze v klauzuli WHERE?

  3. Dotaz Oracle PL/SQL se nezkompiluje

  4. MySQL:Získejte nejnovější zprávu ze 2 tabulek, které jsou vzájemně propojeny