首页 > 解决方案 > 运行 Oracle 命令时出现错误 ORA-06550 和 PLS-00103

问题描述

运行时cmd.ExecuteNonQuery,显示如下错误:

System.Exception:'ORA-06550:第 1 行,第 13 列:PLS-00103:当需要以下符号之一时,发现符号“NET_BUSCAR_SOCIO_P1”:

:= 。(@%;

using (OracleConnection con = new OracleConnection(connectionString))
{
    using (OracleCommand cmd = con.CreateCommand())
    {
        try
        {

            cmd.CommandText = " CALL NET_BUSCAR_SOCIO_P1(vCPF,vExisteSocio,vMatricula,vCodTbSituacao,vNomSocio,vExisteDebito,vExisteRecebimento,vCodTipoSocio,vExisteChequeDev); ";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("vCPF", OracleDbType.Int64).Direction = ParameterDirection.Input;
            cmd.Parameters["vCPF"].Value = cpf;
            cmd.Parameters.Add("vExisteSocio", OracleDbType.Int16).Direction = ParameterDirection.Output;
            cmd.Parameters.Add("vMatricula", OracleDbType.Int16).Direction = ParameterDirection.Output;
            cmd.Parameters.Add("vCodTbSituacao", OracleDbType.Int16).Direction = ParameterDirection.Output;
            cmd.Parameters.Add("vNomSocio", OracleDbType.Varchar2, 35).Direction = ParameterDirection.Output;

            cmd.Parameters.Add("vExisteDebito", OracleDbType.NChar).Direction = ParameterDirection.Output;
            cmd.Parameters.Add("vExisteRecebimento", OracleDbType.Int16).Direction = ParameterDirection.Output;

            cmd.Parameters.Add("vCodTipoSocio", OracleDbType.Varchar2, 30).Direction = ParameterDirection.Output;
            cmd.Parameters.Add("vExisteChequeDev", OracleDbType.Int16).Direction = ParameterDirection.Output;

            con.Open();
            cmd.ExecuteNonQuery();

            int existesocio = (int)cmd.Parameters["vExisteSocio"].Value;
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            if (con.State == ConnectionState.Open)
            {
                con.Close();
            }
        }
    }
}

标签: c#oracleoraclecommand

解决方案


使用时应仅包含存储过程cmd.CommandType = CommandType.StoredProcedure;CommandText名称,即:

                cmd.CommandText = "NET_BUSCAR_SOCIO_P1";

推荐阅读