问题标签 [table-valued-parameters]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 使用带有通配符的表值参数?
情节...
我正在用ASP.net和Visual Basic开发一个网站,显示用户生成的产品列表(以下称为“帖子”)。在这个站点中,我有一个搜索框,可以让用户更轻松地找到他的帖子。搜索框旨在允许用户输入特定的关键字,这有望提供更定制的搜索。例如:
在上面的示例中,用户已指定他想搜索作者与名称“John Smith”匹配的书籍,以及标签“Crime”和“Suspense”的书籍。
脚步:
- 我的 SearchBoxManager 类检索这些键名(作者、标签)和键值(约翰·史密斯、犯罪、悬念)。
- 我使用这些参数运行 SQL 查询以寻找精确匹配。
- 我从键值中提取每个单词,以便可以单独搜索它们。
- 这是我遇到问题的地方。我使用那些寻找非精确匹配的参数运行 SQL 查询(例如,'%John%'、'%Smith%')。这一步是创建一个基于相关性的结果系统。这是我的第一个相关性算法,所以我可能会走错路。
问题...
为了使第三步正常工作,我想将每组从键值中分离出来的单词放入一个表值参数中,然后在通配符“%”包围的 SqlCommandText 中使用该表值参数。
换句话说,因为每个键值中的单词数可能每次都会改变,所以我需要将它们放在某种表值参数中。我还认为我可以以某种方式将它们串在一起并直接在查询字符串中使用它们,但我中途停止了,因为它变得有点混乱。
问题...
- 我可以将通配符与表值参数一起使用吗?如果可以,如何使用?
此外,如果你们中的任何人开发了本地搜索框的相关性排名算法或知道一个,如果您能指出正确的方向,我将不胜感激。
先感谢您。
sql - SQL Server 中的表值参数错误
我正在为公司项目开发报告模块。尽管我们在应用程序中使用了 ORM,但我决定为报告编写存储过程,以期迁移到 SSRS。
这些存储过程需要表值参数输入。因此,我创建了我的表类型:
我有以下 SQL Server 存储过程:
当我尝试更改存储过程时,我不断收到错误消息
我无法弄清楚为什么会这样。如果我确实使用了标量类型(并更新我的代码以匹配)它可以工作。但是,当我尝试使用 TVP 时,我无法编译存储过程。
对于它的价值,我已经添加了类型,但我还没有设置权限。但是,我不认为这会导致编译错误。它只会在运行时导致错误(我之前已经处理过)。
有没有人有这个问题的经验?谢谢!
asp.net-mvc-3 - 如何在 mvc 实体框架 4 的控制器中调用同时返回表和返回语句的存储过程?
我有一个存储过程,它返回一个表以及一个返回错误状态,它是一个 int。如何从 MVC 中的控制器调用此存储过程。
(我正在使用实体框架 4)
CREATE PROC [dbo].[sp_list24](@emp dbo.list READONLY ,@error int output) AS BEGIN BEGIN TRY DECLARE @Error_State INT
设置@Error_State = 1
更新 dbo.employee SET mobile=mobile+11 WHERE eid=2 SELECT * FROM @emp set @error=@Error_State; 选择@错误
END TRY BEGIN CATCH SET @error = ERROR_STATE() 选择 @error
结束接住结束走
这里的“列表”是一个用户定义的表类型,用于传递表值参数。
在控制器中:
}
段落 id 是“sdf”,按钮 id 是“asd”!!!!!!
结果显示:
身份证姓名年龄
1 约翰 21
2 阿尔伯特 22
3马丁23
它不返回@Error_State。我也尝试使用 select @Error_State 。但它也不起作用。如何调用同时返回表和返回语句的存储过程?
asp.net-mvc - 如何在 mvc 实体框架 4 的控制器中调用返回 2 个表的存储过程?
我有一个返回 2 个表的存储过程。如何从 MVC 中的控制器调用此存储过程。(我正在使用实体框架 4)
存储过程:
这里的“列表”是一个用户定义的表类型,用于传递表值参数。
在控制器中:
鉴于:段落 id 为“sdf”,按钮 id 为“asd”!!!!!!
脚本:
结果仅显示项目表中的内容。如何从存储过程中获取两个实体?它只是检索第一个选择语句。谁能帮我解决这个问题..?
sql - 多部分标识符无法与表值函数绑定在左外连接中
我写这段代码
dbo.getrtmn 是一个表值函数,并且有一个名为 rtmid 的 uniqueidentifier 字段。prsnid 是唯一标识符
当我运行此 SQL 查询导致错误:
无法绑定多部分标识符“tblprsn.prsnid”。
c#-4.0 - 使用 PetaPoco 将表值参数传递给存储过程
虽然我正在尝试使用 PetaPoco 调用 SQL Server 2008 R2 存储过程。
我的存储过程接受一个表值参数。
如何使用表值参数调用 petapoco 中的存储过程?
这是我想要做的:
这段代码给了我一个例外:
传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议流不正确。
参数 3 ("@0"):数据类型 0x62 (sql_variant) 的类型特定元数据的类型无效。
如果我设置参数值
然后我得到异常
当我定义我的参数时
然后我得到异常
列、参数或变量@0。: 找不到结构化数据类型。
如何SqlParam
使用表值参数进行定义,以便我可以将它的数据发送到 SQL Server?
解决方案:
sql-server-2008 - SSDT 发布因 TVP 依赖而受阻
我正在尝试发布对用户定义的表值类型的更改,但 SSDT 发布失败并出现以下错误:
TVP 从
到
我可以发布到新的本地数据库,但不能升级现有数据库。知道为什么吗?
sql - SQL Server 2008 + TVP 合并
我正在使用表值参数来合并我的记录,但最重要的是,我还需要从我的数据库中删除我的 TVP 表中不存在的记录。任何人都可以请帮忙。谢谢。
另一种方法是先简单地删除所有记录,然后再继续插入,但记录的数量可能高达数千,因此性能可能是一个问题。
sql-server-2008 - TSQL拆分函数创建多行多列(表值函数)
我想从使用两个不同文本分隔符的字符串中返回整个表。行用分号,列用逗号。表值函数可以做到这一点,但我太不了解如何解析然后将数据附加到预先存在的数据集中。
假设每一行的列数与其他行相同,我希望能够在数据集中容纳非固定数量的列。应该是数据在字符串中的顺序是列出来的顺序。希望这意味着将来对分隔的索引字符串具有广泛的适用性。
示例(为清楚起见添加了回车 - 这是一个字符串):
变成:
理想情况下,拆分函数可以容纳与数据集中的逗号一样多的列。
当前拆分字符串函数:
我SplitString
现在正在使用以下 SQL 查询调用该函数。这仅基于单个分隔符进行拆分,并且仅返回单个列。
同样,我希望调整此函数以接受两个分隔符,然后使用这些分隔符拆分为行和列。然后需要将表值函数返回附加到预先存在的数据集。
c# - 仅当记录不存在时才通过存储过程从 TVP 列表中插入项目 - 性能下降
我需要从 .NET 4.5 应用程序调用存储过程。作为 ORM,我使用 Dapper。
Cars
存储过程接受 TVP 参数,并且仅当 car withcar_id
不存在时才将汽车从列表插入到表中。
桌子:
电视节目:
存储过程:
问题是存储过程的性能。如果表中存在超过 30 000 辆汽车,则存储过程调用需要 20 秒。
我调试我的应用程序,通过 SQL Server Management Studio 进行测试,我认为瓶颈是存储过程。
任何建议如何调整这个存储过程。
我使用 SQL Server 2012。
谢谢