1

我是 BIML 的新手。我被困在我想在 C# 中调用 SQL Server 存储过程并希望在存储过程中将 SSIS 项目参数作为参数传递的地步。

例如 -

<# string sSQL1 = "Exec dbo.USP_ProcName 'p1'";#>

<# DataTable tbl1 = ExternalDataAccess.GetDataTable(DBConnectionStr,sSQL1); #>

<# foreach (DataRow row in tbl1.Rows){ #>
<Package PackageName="<#=row["PackageName"]#>" />
...
<# } #>

在上面的示例中,我想使用 SSIS 项目参数,@[Project::Param1]而不是常量 value p1,但我没有正确使用,并且一直出现语法错误。

有人可以帮忙吗?提前致谢

4

2 回答 2

0

看起来您正在使用存储过程的结果来构建一个DataTable,然后用于通过 Biml 创建您的 SSIS 包。据我所知,这是不可能的。

如果您想在实际的 Biml 脚本中包含动态元素,则需要在元数据文件或可以连接和检索的数据库中引用这些值。

于 2017-06-05T15:59:48.463 回答
0

我知道我参加聚会有点晚了,但如果有人想知道这实际上是可能的。以下代码应该可以正常工作:

<# 
    string _queryString;
    DataTable _sprocResultSetDT;
    _queryString = string.Format("Exec dbo.MySproc {0}", "InsertParamValueHere");

    _sprocResultSetDT = ExternalDataAccess.GetDataTable (_myConnectionString,_queryString); 

    foreach (DataRow row in _sprocResultSetDT.Rows)
    {
#>
    <Package PackageName="<#=row["PackageName"]#>" />

<#  } #> <!-- end of foreach loop -->

如果它返回多条消息,请不要忘记在 sproc 内部设置 NOCOUNT ,否则它将无法工作。

于 2018-05-16T10:46:20.237 回答