首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BIML中的嵌套查询

BIML中的嵌套查询
EN

Stack Overflow用户
提问于 2021-04-24 04:01:29
回答 1查看 30关注 0票数 0

我正在尝试BIML,这条道路充满了试验和错误。

我必须从固定长度的平面文件中传输数据,并且我将文件和字段的元数据存储在两个SQL Server表中: SourceTable和SourceColumn。因此,我尝试了以下方法来为我的字段生成元数据:

代码语言:javascript
复制
<Tables>
<# Dim dtTables as DataTable = ExternalDataAccess.GetDataTable(staging.ConnectionString, "SELECT TableName FROM SourceTable")
for each dr as datarow In dtTables.Rows#>
<Table Name="<#= dr.item(0)#>" SchemaName="myDatabase.mySchema">
<Columns>
<# Dim dtColumns as DataTable = ExternalDataAccess.GetDataTable(staging.ConnectionString,"SELECT ColumnName FROM SourceColumn WHERE TableName = '+<#=dr.item(0)#>+'")
for each drColumn as datarow in dtColumns.Rows#>
<Column Name="<#= drColumn.Item(0) #>"></Column>
<#next#>
</Columns>
</Table>
<#next#>
</Tables>

当然,BIML不希望我在第二个查询中间连接<#=dr.item(0)#> (表名)。

有没有办法做到这一点?

谢谢!

西蒙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-24 04:49:05

当您在<#中时,您处于“普通”编码空间中,因此您可以访问任何可用的变量

变化

代码语言:javascript
复制
Dim dtColumns as DataTable = ExternalDataAccess.GetDataTable(staging.ConnectionString,"SELECT ColumnName FROM SourceColumn WHERE TableName = '+<#=dr.item(0)#>+'")

代码语言:javascript
复制
Dim dtColumns as DataTable = ExternalDataAccess.GetDataTable(staging.ConnectionString,"SELECT ColumnName FROM SourceColumn WHERE TableName = '" & dr.item(0) & "'")

是的,对于未来的评论者来说,如果有人将sql注入添加到您的表中,这可能会有风险,但如果发生了,您已经被拥有了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67236202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档