问题标签 [sql-variant]

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.

0 投票
1 回答
764 浏览

sql-server - 将变量作为 sql_variant 类型传递到存储过程的问题

尝试将不同类型的变量传递到以 SQL_Variants 形式接收变量的存储过程中时遇到问题。

这是我正在调用的存储过程:

这是我从另一个存储过程调用此存储过程:

当我尝试调试此调用/存储过程时,调试器会跳过此存储过程,并且永远不会设置输出参数。是的,我对我的调试过程充满信心......尝试了 SSMS 和 VisualStudio 2015。调试时似乎都跳过了这个调用。有时,此调用确实可以正常工作,并且 usp_GetOrCreateCorrespondenceBatchID 确实可以正常执行。几天试图追查问题后,我找不到一个明显的案例,即呼叫始终有效与无效。这个存储过程是从许多父存储过程中调用的。在调用始终有效和不有效的存储过程时,我发现没有一致性。有时调用存储过程 A 确实有效,而大多数情况下则无效。

参数表非常简单:

将参数作为 sql_variant 传入的原因是不同的批次将具有不同类型的不同参数,并且以后选择正确的类型值要容易得多,而不必在选择时进行强制转换。

我究竟做错了什么?

我可以只存储参数的字符串值,并在从参数表中选择它们时进行转换。如果我不知道为什么这个电话不能正常运行,我会走这条路。

这只是 SQL_Variant 类型的一个弱点吗?SQL 服务器上是否有错误配置?

SQL Server 2012 标准。数据库版本相同。

0 投票
1 回答
4376 浏览

c# - 您如何正确处理 Entity Framework Core 中的 SQL_VARIANT?

看起来最近已向 Entity Framework Core 添加了支持,.NET Core 2.1 (preview)以允许SQL_VARIANT列映射 ( https://github.com/aspnet/EntityFrameworkCore/issues/7043 )。

看起来这样做的方法是使用新HasConversion()方法(https://docs.microsoft.com/en-us/ef/core/modeling/value-conversions)。

因此,为了映射我的SQL_VARIANT列并将基础数据类型视为VARCHAR任意长度的 a(此时我只关心读取它),我可以执行以下操作(此处的Value属性是object模型中的类型):

如果SQL_VARIANT的基础数据类型是VARCHAR任意长度的,则此方法有效。

但是,作为 a SQL_VARIANT,该列可以包含其他类型的数据,例如DATETIME值。

为简单起见,我只在此处指定DateTimestring,但理论上我可能希望支持映射任何可以存储在SQL_VARIANT列中的数据所需的数据类型,如果可能的话。

我将如何确定我想在运行时映射到这两种类型(string和)中的哪一种?DateTime有没有办法做到这一点?

0 投票
1 回答
29 浏览

postgresql - PostgreSQL 函数更新行的特定列

我正在尝试创建一个从表中调用特定数据的函数,但是为什么它显示的列不存在,即使它在数据库中。

但是当我尝试调用它时,它会在此处显示此错误 ,我尝试将信息设为默认值,因此会发生此错误。如果我没有做任何默认设置并从代码运行该函数,它会再次显示该错误。

0 投票
1 回答
100 浏览

orientdb - 将 SQL Server SQL_VARIANT 数据类型导入 OrientDB 顶点 - 我应该使用哪种属性类型?

我正在评估 OrientDB 作为 MS SQL Server 的替代品。我需要导入 OrientDB 的 SQL Server 表之一包含时间序列数据,其中 value 列使用 SQL_VARIANT 数据类型。我正在努力确定用于新 OrientDB 顶点中等效属性的最佳数据类型。我对将其转换为 STRING 犹豫不决,但我没有看到等效的变体类型。有什么建议吗?

0 投票
1 回答
231 浏览

sql - 如何使用 Powershell 处理 sql_Variant sql 数据类型

我正在使用 power shell 执行存储过程之一,该存储过程具有数据类型为 sql_Variant 的参数之一并驻留在 SSISDB(系统存储过程)中

由于 sql_variant 支持多数据类型,我正在传递 int、string 和 boolean 数据类型。

当我传递字符串数据类型时,存储过程执行得很好。但不是 int 和 boolean。

过程名称是

目录.Set_Object_Parameter_Value

它有一个数据类型为 SQL_Variant 的参数。下面是屏幕截图。

在此处输入图像描述

根据某些条件输入值时,我将获得 int/string/bool 数据类型。

在使用 Power-shell 输入之前,如何处理/将这些值转换为 Sql_Variant 数据类型。

目前我的 power-shell 命令如下所示。

0 投票
1 回答
591 浏览

sql-server - 在 Django 中是否有办法始终将特定字段投射到 VARCHAR?

背景情况说明:

我正在创建一个使用 Microsoft SQL Server 作为后端数据库的 Django2 应用程序。SQL_VARIANT该数据库有几个包含字段的表(我无法管理或更改它们) 。此字段包含空字符串或数字(它们用作主键或外键)

问题:

在 MSSQL 上,当您JOIN使用一个SQL_VARIANT字段和一个VARCHAR字段时,它会产生一个空行结果,要解决这个问题,您必须使用显式将 SQL_VARIANT 字段转换为 VARCHARCAST([Table Name].[SQL_VARIANT Field Name] AS VARCHAR

目标:

我想找到一种方法,CAST([Table Name].[SQL_VARIANT Field Name] AS VARCHAR每次 DjangoJOIN在 QuerySet 上创建或调用 QuerySetSQL_VARIANT上的字段时

我怎样才能做到这一点?

代码作为参考:

在我的问题中,我使用了 MSSQL 数据库中的 3 个表(供应商、产品和产品分类帐条目)

供应商表

产品表

产品分类帐条目表

如果我想横穿所有 3 张桌子,我会做......

但是,此查询不会产生任何行。只有通过对SQL_VARIANT字段进行显式强制转换,此查询才会显示异常结果。

当你使用 Django 时也会发生同样的事情,这里是模型:

只要我不使用 annotate(...)、select_related(...) 或任何其他 Django API 方法JOIN,我就可以设法获得正确的结果。但是,我想使用注释。

请帮我

0 投票
1 回答
169 浏览

sql-server - SQL_VARIANT 和 DATETIME2

假设您有下表:

并让我们插入一些 DATETIME2 值:

现在,让我们看看结果:

为什么值会被截断?

0 投票
1 回答
224 浏览

snowflake-cloud-data-platform - 如何从雪花中的变体列创建子集?

例如,假设我的变量列“xyz”包含如下数据:

我想要一个来自上面的变量列的新变量列,它应该只有“post*”键值,如下所示,输出应该是这样的。

有什么办法可以实现吗?

0 投票
1 回答
120 浏览

azure - 我想在外部表 Azure SQL 中使用 SQL_VARIANT 数据类型,我得到“索引超出范围错误”。

我在 Azure 中托管的服务器上有两个 SQL Azure 数据库 - DatabaseA 和 DatabaseB。

我需要从 DatabaseB 访问 DatabaseA 的视图——即我需要 DatabaseA 中的 sys.identity_columns 在 DatabaseB 上可供我使用。所以我在 DatabaseB 上创建了一个外部表,它链接到这样的信息(我没有包括所有列,但我包括了导致问题的列)

当我运行它时 - 它有效。但是当我尝试使用结果时 - select * from [SOURCE_SYS].[identity_columns] - 我收到此错误:

消息 46823,级别 16,状态 1,第 50 行从 MyServer.database.windows.net.DatabaseA 检索数据时出错。收到的基本错误消息是:'索引超出范围。必须是非负数且小于集合的大小。参数名称:索引'。

如果我注释掉该表中具有 sql_variant 数据类型的字段 - 它可以正常工作,但我确实需要该字段中的信息以及同一个表中存在的其他两个 sql_variant 字段。MyElasticDBQueryDataSrc 在没有 sql_variant 类型的其他类似表上工作正常。

谁能建议我可能做错了什么?或者建议一个解决方法?我尝试使用 bigints,因为它主要是整数或 null 的种子值,但这不起作用,因为它告诉我它不是相同的数据类型。

非常感谢任何帮助。

0 投票
0 回答
65 浏览

sql-server - Non-dynamic way to change sql_variant collation and keep type and size

SQL Server 2019. I am looking for a solution to change the collation of sql_variant values in a select statement, if there is one. The proplem is that the COLLATE operator cannot be applied to sql_variant data types. The select queries are cross-database and may be invoked using OPENQUERY. It is not allowed to inject extended stored procedures or CLR functions.

Currently I am forced to post-process results with a cursor.

All my research led to this