예제 #1
0
        internal string GetAttributeString(OciAttributeType attrType, OciErrorHandle errorHandle)
        {
            string output    = String.Empty;
            IntPtr outputPtr = IntPtr.Zero;
            int    outSize;
            int    status = 0;

            status = OciCalls.OCIAttrGet(Handle,
                                         HandleType,
                                         out outputPtr,
                                         out outSize,
                                         attrType,
                                         errorHandle);

            if (status != 0)
            {
                OciErrorInfo info = errorHandle.HandleError();
                throw new OracleException(info.ErrorCode, info.ErrorMessage);
            }

            if (outputPtr != IntPtr.Zero && outSize > 0)
            {
                object str = Marshal.PtrToStringAnsi(outputPtr, outSize);
                if (str != null)
                {
                    output = String.Copy((string)str);
                }
            }

            return(output);
        }