我已经设法通过在脚本中标记默认变量来取得一些进展,就像这样;
/** DEFAULTS **/
declare @id int
set @id = 43
/** END DEFAULTS **/
然后在我的C#程序中预处理脚本,如此;
script = RemoveBlock(script, "DEFAULTS");
并执行如此的功能;
public static string RemoveBlock(string script, string blockName)
{
if (script == null) { return null; }
var startTag = string.Format("/** {0} **/", blockName);
var endTag = string.Format("/** END {0} **/", blockName);
var startTagIdx = script.IndexOf(startTag);
if (startTagIdx == -1) { return script; }
var endTagIdx = script.IndexOf(endTag, startTagIdx + startTag.Length);
if (endTagIdx == -1) { return script; }
var endOfEndTag = endTagIdx + endTag.Length;
var beforeBlock = script.Substring(0, startTagIdx);
var afterBlock = script.Substring(endOfEndTag);
return beforeBlock + afterBlock;
}
所以C#程序运行一个没有变量但带参数的版本。
嗨。我有类似的想法...我无法修改数据库,所以我不能把它写成SP;评论区块是我目前的方式。 – 2010-11-03 10:05:21
一个建议:使用 - 而不是/ *,因此您可以在管理工作室中使用注释和取消注释工具栏按钮。 – 2010-11-03 10:23:31