问题标签 [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.
sql-server - 将变量作为 sql_variant 类型传递到存储过程的问题
尝试将不同类型的变量传递到以 SQL_Variants 形式接收变量的存储过程中时遇到问题。
这是我正在调用的存储过程:
这是我从另一个存储过程调用此存储过程:
当我尝试调试此调用/存储过程时,调试器会跳过此存储过程,并且永远不会设置输出参数。是的,我对我的调试过程充满信心......尝试了 SSMS 和 VisualStudio 2015。调试时似乎都跳过了这个调用。有时,此调用确实可以正常工作,并且 usp_GetOrCreateCorrespondenceBatchID 确实可以正常执行。几天试图追查问题后,我找不到一个明显的案例,即呼叫始终有效与无效。这个存储过程是从许多父存储过程中调用的。在调用始终有效和不有效的存储过程时,我发现没有一致性。有时调用存储过程 A 确实有效,而大多数情况下则无效。
参数表非常简单:
将参数作为 sql_variant 传入的原因是不同的批次将具有不同类型的不同参数,并且以后选择正确的类型值要容易得多,而不必在选择时进行强制转换。
我究竟做错了什么?
我可以只存储参数的字符串值,并在从参数表中选择它们时进行转换。如果我不知道为什么这个电话不能正常运行,我会走这条路。
这只是 SQL_Variant 类型的一个弱点吗?SQL 服务器上是否有错误配置?
SQL Server 2012 标准。数据库版本相同。
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
值。
为简单起见,我只在此处指定DateTime
和string
,但理论上我可能希望支持映射任何可以存储在SQL_VARIANT
列中的数据所需的数据类型,如果可能的话。
我将如何确定我想在运行时映射到这两种类型(string
和)中的哪一种?DateTime
有没有办法做到这一点?
postgresql - PostgreSQL 函数更新行的特定列
我正在尝试创建一个从表中调用特定数据的函数,但是为什么它显示的列不存在,即使它在数据库中。
但是当我尝试调用它时,它会在此处显示此错误 ,我尝试将信息设为默认值,因此会发生此错误。如果我没有做任何默认设置并从代码运行该函数,它会再次显示该错误。
orientdb - 将 SQL Server SQL_VARIANT 数据类型导入 OrientDB 顶点 - 我应该使用哪种属性类型?
我正在评估 OrientDB 作为 MS SQL Server 的替代品。我需要导入 OrientDB 的 SQL Server 表之一包含时间序列数据,其中 value 列使用 SQL_VARIANT 数据类型。我正在努力确定用于新 OrientDB 顶点中等效属性的最佳数据类型。我对将其转换为 STRING 犹豫不决,但我没有看到等效的变体类型。有什么建议吗?
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 命令如下所示。
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
,我就可以设法获得正确的结果。但是,我想使用注释。
请帮我
sql-server - SQL_VARIANT 和 DATETIME2
假设您有下表:
并让我们插入一些 DATETIME2 值:
现在,让我们看看结果:
为什么值会被截断?
snowflake-cloud-data-platform - 如何从雪花中的变体列创建子集?
例如,假设我的变量列“xyz”包含如下数据:
我想要一个来自上面的变量列的新变量列,它应该只有“post*”键值,如下所示,输出应该是这样的。
有什么办法可以实现吗?
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 的种子值,但这不起作用,因为它告诉我它不是相同的数据类型。
非常感谢任何帮助。
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