Попробуйте это:
{{#each data}}
<p>{{plan_name}}</p>>
{{#each test}}
{{activity_name}}
{{comment}}
{{/each}}
{{/each}}
Просто считайте вывод ИЗБРАННОГО ИМЕНИ от SYS.PROCEDURES, затем вызовите должностное лицо sp_HelpText SPNAME для каждой хранимой процедуры, Вы получите официальный набор документов с одной строкой текста на строку.
Это сообщение в блоге предлагает выполнить это против Вашей базы данных:
select * from sys.procedures
Можно использовать SMO для этого. В первую очередь, добавьте ссылки на эти блоки к Вашему проекту:
Они расположены в GAC (обзор к папке C:\WINDOWS\assembly).
Используйте следующий код как пример сценариев хранимых процедур:
using System;
using System.Collections.Generic;
using System.Data;
using Microsoft.SqlServer.Management.Smo;
class Program
{
static void Main(string[] args)
{
Server server = new Server(@".\SQLEXPRESS");
Database db = server.Databases["Northwind"];
List<SqlSmoObject> list = new List<SqlSmoObject>();
DataTable dataTable = db.EnumObjects(DatabaseObjectTypes.StoredProcedure);
foreach (DataRow row in dataTable.Rows)
{
string sSchema = (string)row["Schema"];
if (sSchema == "sys" || sSchema == "INFORMATION_SCHEMA")
continue;
StoredProcedure sp = (StoredProcedure)server.GetSmoObject(
new Urn((string)row["Urn"]));
if (!sp.IsSystemObject)
list.Add(sp);
}
Scripter scripter = new Scripter();
scripter.Server = server;
scripter.Options.IncludeHeaders = true;
scripter.Options.SchemaQualify = true;
scripter.Options.ToFileOnly = true;
scripter.Options.FileName = @"C:\StoredProcedures.sql";
scripter.Script(list.ToArray());
}
}
См. также: SQL Server: SMO сценарии основ.
;WITH ROUTINES AS (
-- CANNOT use INFORMATION_SCHEMA.ROUTINES because of 4000 character limit
SELECT o.type_desc AS ROUTINE_TYPE
,o.[name] AS ROUTINE_NAME
,m.definition AS ROUTINE_DEFINITION
FROM sys.sql_modules AS m
INNER JOIN sys.objects AS o
ON m.object_id = o.object_id
)
SELECT *
FROM ROUTINES
Я думаю, что это - то, что Вы действительно ищете:
select SPECIFIC_NAME,ROUTINE_DEFINITION from information_schema.routines
Существует тонна других полезных столбцов там также...
Можно написать код C# для выполнения следующего запроса на базе данных.
Select * from sys.procedures
Можно использовать:
DataTable dtProcs = sqlConn.GetSchema("Procedures", new string[] { databaseName });
DataTable dtProcParams = sqlConn.GetSchema("ProcedureParameters", new string[] { databaseName });
Можно также получить все виды другой информации о схеме как таблицы, индексы и т.д. при необходимости в них.
Можно получить информацию о GetSchema () здесь и информацию о Наборах Схемы SQL Server здесь
Править: Извините, это не помогает с фактическими сценариями информации, но я предполагаю, что это - полезная информация, чтобы иметь.
Проблемы с языком Python - вещи, которые терпят неудачу очень непонятными способами
Использование изменяемых аргументов по умолчанию.
Начальные нули означают восьмеричное число. 09
- очень непонятная синтаксическая ошибка в Python 2.x
Ошибочное написание переопределенных имен методов в суперклассе или подклассе. Ошибка неправильного написания суперкласса еще хуже, потому что ни один из подклассов не переопределяет ее правильно.
Проблемы с дизайном Python
Тратить время на самоанализ (например, попытки автоматически определить типы или идентичность суперкласса или что-то другое). Во-первых, это очевидно из чтения первоисточника. Что еще более важно, время, потраченное на странный самоанализ Python, обычно указывает на фундаментальную неспособность понять полиморфизм. 80% вопросов самоанализа Python по SO - это неспособность получить полиморфизм.
Тратить время на код для гольфа. Тот факт, что ваша ментальная модель вашего приложения состоит из четырех ключевых слов («делаю», «что», «я», «имею в виду»), не означает, что вы должны создать для этого гипер-сложную интроспективную структуру, управляемую декоратором. Python позволяет поднять СУХОЙ до уровня глупости. Остальные вопросы самоанализа Python по SO пытаются свести сложные проблемы к кодированию упражнений в гольф.
Monkeypatching.
Неспособность фактически прочитать стандартную библиотеку и изобретение колеса.
Конфликт интерактивного типа как- вы идете на Python с подходящей программой. Когда вы печатаете в интерактивном режиме, вы можете потерять контроль над переменной и использовать globals ()
. Кроме того, пока вы печатаете, почти все глобально. В правильных программах вы никогда не потеряете переменную,
Если вы откроете банку отражателя в sqlmetal.exe (автономная часть LINQ-to-SQL, которая генерирует код из базы данных), вы увидите, какие операторы SQL он использует для получения списка всех сохраненных процедуры и функции. SQL подобен, но не идентичен в этом ответе .