【问题标题】:how to pass multiple value from list box to stored procedure如何将多个值从列表框传递到存储过程
【发布时间】:2013-10-24 06:56:44
【问题描述】:

我有一个像这样的表值参数

CREATE TYPE dbo.ss AS TABLE(ss1 integer);

我的存储过程是这样的:

ALTER PROCEDURE [dbo].[T_TransactionSummary] 
 @locations dbo.ss readonly
as
begin
...............
.............
AND (Location_tbl.Locid IN (select ss1 from @locations))  

我有一个列表框..包含多个项目..同时我可以从我的列表框中选择多个项目..如果我总是从我的列表框中选择一个位置,我如何将多个 Locationid 传递给我的存储过程。 .然后我可以这样通过:

dim locid as integer=Lstbox.selectedItem
cmd.parameters.add("@locations",locid)..

但我不知道如何将选定的项目一起从列表框传递到存储过程

我正在开发 vb.net windows 窗体

【问题讨论】:

    标签: sql sql-server vb.net stored-procedures


    【解决方案1】:

    使用 SqlParameter 的 TypeName 属性为表值参数指定类型名称。 TypeName 必须与先前在服务器上创建的兼容类型的名称匹配:

    tvp1.TypeName = "dbo.ss"
    

    希望对你有帮助!!!

    【讨论】:

    • 它不是 SqlParameter 的 'DbType' 属性。它是“类型名称”。此链接将有所帮助:msdn.microsoft.com/en-us/library/bb675163(v=vs.90).aspx
    • 我是这样给出的:但现在我收到错误:操作数类型冲突:表类型与 int 不兼容
    • 先生,现在我给出了你所说的:tvp1.TypeName = "dbo.ss" 但出现错误:操作数类型冲突:表类型与 int 不兼容
    • 我检查了那个链接,现在我的代码几乎一样了..但仍然出现错误
    • 我可以看到您没有从存储过程中返回任何东西,但是在代码中您已经编写了 SqlDataAdapter.SelectCommand 和 Fill 以从数据库中选择记录以放置在 DataSet 中。用 cmd23.ExecuteNonQuery() 替换最后两行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2017-01-31
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多