在SQL TableAdapter上使用相同的参数2(或更多)次但仅传递1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL TableAdapter上使用相同的参数2(或更多)次但仅传递1相关的知识,希望对你有一定的参考价值。

我正面临着VB.NET的问题以及在DataSet上创建SQL TableAdapter(使用IBM DB2)。

我可以使用像这样的SQL没有任何问题:

select f1, f2, f3 from table where y1=@param1 and y2=@param2

然后调用TableAdapter填充如下:

TableAdapter.FillBy(Me.DataSetName.Table, value1, value2)

但是,如果我尝试做一个UNION句子,如:

select f1, f2, f3 from table where y1=@param1 and y2=@param2
UNION select f1, f2, f3 from table2 where y1=@param1 and y2=@param2

当我调用TableAdapter时,TableAdapter设计器不会提示任何错误.Fill它要求4个参数而不是2个,就像它不能重用相同的参数,即使两个SQL表中的名称相同也是如此。

有没有办法避免使用4个不同的参数?

提前致谢。

答案

我从来没有使用过DB2,但似乎没有其他人有答案所以我会根据我的MSSQL经验给它一个镜头。

尝试使用变量扩充查询,这样您只需要编写一次。 (数据类型猜测......):

DECLARE v_param1, v_param2 VARCHAR;
SELECT @param1, @param2 INTO v_param1, v_param2;
SELECT f1, f2, f3 FROM table WHERE y1=v_param1 AND y2=v_param2
UNION 
SELECT f1, f2, f3 FROM table2 WHERE y1=v_param1 AND y2=v_param2

以上是关于在SQL TableAdapter上使用相同的参数2(或更多)次但仅传递1的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TableAdapter 查询中使用命名参数?

无法通过带有 TableAdapter 的视图更新 SQL

使用带有 SqlCommandBuilder 的 TableAdapter 和导出到 DataTable 的工作表来更新 SQL 数据库表

我在 vs 2012 中使用数据集,但在 Designer.cs 中查看 tableadapter 不生成代码

使用 .NET 中的类型化数据集将 SQL 参数传递给 IN() 子句

Datagridview 更新到多个表而不使用 bindingsource 或 tableadapter