コード例 #1
0
        public void GetStoredProcedureMetaDataDetails(StoredProcedureMetaData storedProcedureMetadata, string connStr)
        {
            int indexCount = 0;
            ObservableCollection <ParameterMetaData> parameters = new ObservableCollection <ParameterMetaData>();

            string sql = string.Format(@"select 
                                           PARAMETER_NAME
		                                    , value as Description
		                                    , CASE WHEN VALUE IS NULL THEN CAST(0 AS BIT) ELSE CAST(1 AS BIT) END AS HasDescription
                                        from INFORMATION_SCHEMA.PARAMETERS
                                        outer apply
                                        (	
	                                        select value from fn_listextendedProperty('{2}',
	                                         'SCHEMA', SPECIFIC_SCHEMA
	                                        , 'PROCEDURE', SPECIFIC_NAME
	                                        , 'PARAMETER', PARAMETER_NAME)
                                        ) descr
                                        where SPECIFIC_NAME = '{0}' and SPECIFIC_SCHEMA = '{1}' ", storedProcedureMetadata.Level1Name, storedProcedureMetadata.Schema, ApplicationSettings.Default.ExtendedPropKey);


            using (DbCommand cmd = CommandFactory.Create(sql, connStr))
            {
                cmd.Connection.Open();

                DbDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    parameters.Add(new ParameterMetaData
                                   (
                                       storedProcedureMetadata.Level1Name,
                                       reader.GetString(reader.GetOrdinal("PARAMETER_NAME")),
                                       storedProcedureMetadata.Schema,
                                       reader.GetStringOrEmpty(reader.GetOrdinal("Description")),
                                       !reader.GetBoolean(reader.GetOrdinal("HasDescription")),
                                       indexCount++
                                   ));
                }
                reader.Close();
            }

            storedProcedureMetadata.Parameters = parameters;
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="connStr"></param>
        /// <returns></returns>
        private string GenerateWikiMarkupForStoredProcedures(string connStr, StoredProcedureMetaData spMetadata)
        {
            string        result = string.Empty;
            StringBuilder sb     = new StringBuilder();

            string sql = @" 
                    SELECT 
                        WikiMarkup
     
                    FROM 
                        sys.objects so

                    outer APPLY
                    (
                        SELECT (
                                'h2. ' +  SCHEMA_NAME(so.schema_id) + '.' + so.Name + '
                    \\' +
                                    ISNULL( (SELECT    CAST(VALUE AS NVARCHAR(MAX))
                                    FROM 
                                        fn_listextendedProperty(
                                            @ExtendedPropertyName
                                            , 'SCHEMA', SCHEMA_NAME(so.schema_id)
                                            ,'PROCEDURE', so.Name
                                            , NULL, NULL)), '{color:#ff0000}{*}DESCRIPTION MISSING{*}{color}')
                                )  AS WikiMarkup


                        UNION ALL
    
                        SELECT CASE 
                            WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.parameters
			                        where SPECIFIC_NAME = so.name and SPECIFIC_SCHEMA = schema_name(so.schema_id)
			                        )
                                THEN
                                    '||Parameter Name|Datatype|Default value?|Is Output column|Description|' 
                                ELSE
                                    'No parameters'
                                END
                        UNION ALL
    
                        SELECT 
                            '|' + p.name + '|' +
                                  --(,Scale)
                                        CASE 
                                        WHEN system_type_id IN (231,167,175,239) THEN 
                                            CAST(TYPE_NAME(p.system_type_id) AS NVARCHAR(100)) + '(' + CAST(max_length AS NVARCHAR(50)) + ')'
                                        WHEN system_type_id = 106 THEN
                                            CAST(TYPE_NAME(p.system_type_id) AS NVARCHAR(100)) + '(' + CAST(PRECISION AS NVARCHAR(50)) + ', ' + CAST(Scale AS NVARCHAR(50)) +  ')'
                                        ELSE
                                            TYPE_NAME(p.system_type_id)
                                        END
                                     + '|' +
                                  CAST(ISNULL(p.default_value, 'N/a') AS NVARCHAR(100)) + '|' +
                                  CASE p.is_output WHEN 1 THEN 'Yes' ELSE 'No' END + '|' +
                                  ISNULL(CAST(VALUE AS NVARCHAR(MAX)), '{color:#ff0000}{*}DESCRIPTION MISSING{*}{color}') + '|'
                        FROM 
                            sys.parameters p
                        outer  APPLY
                            fn_listextendedProperty(
                                 @ExtendedPropertyName
                                ,'SCHEMA', SCHEMA_NAME(so.schema_id) 
                                ,'PROCEDURE', so.Name
                                ,'PARAMETER', p.name)
                        WHERE 
                            p.object_id = so.object_id
        
                        UNION ALL
    
                        SELECT '
                        \\\
                        '    
        
                    ) spInfo        

                    WHERE 
                        so.type IN ('p', 'fn', 'if', 'tf')
                        and is_ms_shipped = 0
                        and 
                            (@SPName IS NULL or (name = @SPName and schema_id(@SPSchema) = schema_id))

                    ORDER BY 
                        so.name";// ApplicationSettings.Default.ExtendedPropKey);



            using (DbCommand cmd = CommandFactory.Create(sql, connStr))
            {
                // If we are requesting wikimarkup for a specific stored procedure then this sql code need to be included in the search clause.
                if (spMetadata != null)
                {
                    cmd.Parameters.Add(CommandFactory.CreateParameter("SPName", spMetadata.Level1Name));
                    cmd.Parameters.Add(CommandFactory.CreateParameter("SPSchema", spMetadata.Schema));
                    cmd.Parameters.Add(CommandFactory.CreateParameter("ExtendedPropertyName", ApplicationSettings.Default.ExtendedPropKey));
                }
                else
                {
                    cmd.Parameters.Add(CommandFactory.CreateParameter("SPName", DBNull.Value));
                    cmd.Parameters.Add(CommandFactory.CreateParameter("SPSchema", DBNull.Value));
                    cmd.Parameters.Add(CommandFactory.CreateParameter("ExtendedPropertyName", ApplicationSettings.Default.ExtendedPropKey));
                }

                cmd.Connection.Open();
                DbDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    sb.AppendLine(reader[0].ToString());
                }
            }

            return(sb.ToString());
        }