Exemplo n.º 1
0
        /// <devdoc>
        /// Look into configuration and get the information how the command wrapper should be updated if calling a package on this
        /// connection.
        /// </devdoc>
        private void PreparePackageSchema(OracleCommandWrapper commandWrapper)
        {
            const string allPrefix   = "*";
            string       packageName = String.Empty;
            string       prefix      = String.Empty;
            string       commandText = commandWrapper.Command.CommandText;

            if (CommandType.StoredProcedure == commandWrapper.Command.CommandType)
            {
                OracleConnectionStringData oraConnectionString = this.DatabaseProviderData.ConnectionStringData as OracleConnectionStringData;
                if (oraConnectionString != null)
                {
                    foreach (OraclePackageData oraPackage in oraConnectionString.OraclePackages)
                    {
                        if ((oraPackage.Prefix == allPrefix) || (commandText.StartsWith(prefix)))
                        {
                            //use the package name for the matching prefix
                            packageName = oraPackage.Name;
                            break;
                        }
                    }
                }
                if (0 != packageName.Length)
                {
                    commandWrapper.Command.CommandText = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", packageName, commandText);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// <para>Create an <see cref="OracleCommandWrapper"/> for a SQL query.</para>
        /// </summary>
        /// <param name="query"><para>The text of the query.</para></param>
        /// <returns><para>The <see cref="OracleCommandWrapper"/> for the SQL query.</para></returns>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="query"/> can not be <see langword="null"/> (Nothing in Visual Basic).</para>
        /// </exception>
        /// <exception cref="ArgumentException">
        /// <para><paramref name="query"/> hast not been initialized.</para>
        /// </exception>
        public override DBCommandWrapper GetSqlStringCommandWrapper(string query)
        {
            ArgumentValidation.CheckForNullReference(query, "query");
            ArgumentValidation.CheckForEmptyString(query, "query");

            OracleCommandWrapper wrapper = new OracleCommandWrapper(query, CommandType.Text, ParameterToken);

            return(wrapper);
        }
Exemplo n.º 3
0
        /// <summary>
        /// <para>Create an <see cref="OracleCommandWrapper"/> for a stored procedure.</para>
        /// </summary>
        /// <param name="storedProcedureName"><para>The name of the stored procedure.</para></param>
        /// <returns><para>The <see cref="OracleCommandWrapper"/> for the stored procedure.</para></returns>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="storedProcedureName"/> can not be <see langword="null"/> (Nothing in Visual Basic).</para>
        /// </exception>
        /// <exception cref="ArgumentException">
        /// <para><paramref name="storedProcedureName"/> hast not been initialized.</para>
        /// </exception>
        public override DBCommandWrapper GetStoredProcCommandWrapper(string storedProcedureName)
        {
            ArgumentValidation.CheckForNullReference(storedProcedureName, "storedProcedureName");
            ArgumentValidation.CheckForEmptyString(storedProcedureName, "storedProcedureName");

            OracleCommandWrapper wrapper = new OracleCommandWrapper(storedProcedureName, CommandType.StoredProcedure, ParameterToken);

            PreparePackageSchema(wrapper);
            return(wrapper);
        }
Exemplo n.º 4
0
        /// <devdoc>
        /// This is a private method that will build the Oracle package name if your stored procedure
        /// has proper prefix and postfix.
        /// This functionality is include for
        /// the portability of the architecture between SQL and Oracle datbase.
        /// This method will also add the reference cursor to the command writer if not added already. This
        /// is required for Oracle .NET managed data provider.
        /// </devdoc>
        private static void PrepareCWRefCursor(DBCommandWrapper commandWrapper)
        {
            ArgumentValidation.CheckForNullReference(commandWrapper, "commandWrapper");

            OracleCommandWrapper oracleCommandWrapper = (OracleCommandWrapper)commandWrapper;

            if (!(oracleCommandWrapper.ParameterDiscoveryRequired))
            {
                if (CommandType.StoredProcedure == commandWrapper.Command.CommandType)
                {
                    // Check for ref. cursor in the command writer, if it does not exist, add a know reference cursor out
                    // of "cur_OUT"
                    if (!oracleCommandWrapper.IsRefCursorAdded)
                    {
                        oracleCommandWrapper.AddParameter(RefCursorName, OracleType.Cursor, 0, ParameterDirection.Output, true, 0, 0, String.Empty, DataRowVersion.Default, Convert.DBNull);
                    }
                }
            }
        }
Exemplo n.º 5
0
        /// <devdoc>
        /// Look into configuration and get the information how the command wrapper should be updated if calling a package on this
        /// connection.
        /// </devdoc>        
        private void PreparePackageSchema(OracleCommandWrapper commandWrapper)
        {
            const string allPrefix = "*";
            string packageName = String.Empty;
            string prefix = String.Empty;
            string commandText = commandWrapper.Command.CommandText;

            if (CommandType.StoredProcedure == commandWrapper.Command.CommandType)
            {
                OracleConnectionStringData oraConnectionString = this.DatabaseProviderData.ConnectionStringData as OracleConnectionStringData;
                if (oraConnectionString != null)
                {
                    foreach (OraclePackageData oraPackage in oraConnectionString.OraclePackages)
                    {
                        if ((oraPackage.Prefix == allPrefix) || (commandText.StartsWith(prefix)))
                        {
                            //use the package name for the matching prefix
                            packageName = oraPackage.Name;
                            break;
                        }
                    }
                }
                if (0 != packageName.Length)
                {
                    commandWrapper.Command.CommandText = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", packageName, commandText);
                }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// <para>Create an <see cref="OracleCommandWrapper"/> for a stored procedure.</para>
        /// </summary>
        /// <param name="storedProcedureName"><para>The name of the stored procedure.</para></param>
        /// <param name="parameterValues"><para>The list of parameters for the procedure.</para></param>
        /// <returns><para>The <see cref="OracleCommandWrapper"/> for the stored procedure.</para></returns>
        /// <remarks>
        /// <para>The parameters for the stored procedure will be discovered and the values are assigned in positional order.</para>
        /// </remarks>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="storedProcedureName"/> can not be <see langword="null"/> (Nothing in Visual Basic).</para>
        /// <para>- or -</para>
        /// <para><paramref name="parameterValues"/> can not be <see langword="null"/> (Nothing in Visual Basic).</para>
        /// </exception>
        /// <exception cref="ArgumentException">
        /// <para><paramref name="storedProcedureName"/> hast not been initialized.</para>
        /// </exception>
        public override DBCommandWrapper GetStoredProcCommandWrapper(string storedProcedureName, params object[] parameterValues)
        {
            ArgumentValidation.CheckForNullReference(storedProcedureName, "storedProcedureName");
            ArgumentValidation.CheckForEmptyString(storedProcedureName, "storedProcedureName");
            ArgumentValidation.CheckForNullReference(parameterValues, "parameterValues");

            OracleCommandWrapper wrapper = new OracleCommandWrapper(storedProcedureName, CommandType.StoredProcedure, ParameterToken, parameterValues);
            PreparePackageSchema(wrapper);
            return wrapper;
        }
Exemplo n.º 7
0
        /// <summary>
        /// <para>Create an <see cref="OracleCommandWrapper"/> for a SQL query.</para>
        /// </summary>
        /// <param name="query"><para>The text of the query.</para></param>        
        /// <returns><para>The <see cref="OracleCommandWrapper"/> for the SQL query.</para></returns>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="query"/> can not be <see langword="null"/> (Nothing in Visual Basic).</para>
        /// </exception>
        /// <exception cref="ArgumentException">
        /// <para><paramref name="query"/> hast not been initialized.</para>
        /// </exception>
        public override DBCommandWrapper GetSqlStringCommandWrapper(string query)
        {
            ArgumentValidation.CheckForNullReference(query, "query");
            ArgumentValidation.CheckForEmptyString(query, "query");

            OracleCommandWrapper wrapper = new OracleCommandWrapper(query, CommandType.Text, ParameterToken);
            return wrapper;
        }