使用 Snowflake 进行参数化查询并从 Snowflake .NET 连接器传递值

Posted

技术标签:

【中文标题】使用 Snowflake 进行参数化查询并从 Snowflake .NET 连接器传递值【英文标题】:Parametrized query with Snowflake and pass the values from Snowflake .NET Connector 【发布时间】:2021-03-15 06:59:33 【问题描述】:

mysql 和 SQL Server 一样使用 Snowflake 创建参数化。需要从 .NET Snowflake .NET 连接器传递值。

https://www.mssqltips.com/sqlservertip/2981/using-parameters-for-sql-server-queries-and-stored-procedures/

查询值:

select * 
from "SNOWFLAKE_SAMPLE_DATA"."TPCDS_SF100TCL"."WEB_SITE" 
where ((Web_REC_START_DATE is null and IFF('2000-08-16' is null,true,false))    
       or Web_REC_START_DATE > '2000-08-16')

How to use SqlDataReader with a parametrized query in c#?

使用参数名称查询:

select * 
from "SNOWFLAKE_SAMPLE_DATA"."TPCDS_SF100TCL"."WEB_SITE" 
where ((Web_REC_START_DATE is null and IFF(@StartDate is null,true,false)) 
       or Web_REC_START_DATE > @StartDate)

【问题讨论】:

【参考方案1】:

雪花 .net 连接器托管在 github 中,我在 bind-parameter 部分中描述了如何使用

所以看看代码中的测试,特别是BindTest line 75

它显示正在使用的命名参数。因此:

command.CommandText = "insert into TEST_TBL values(:p0)";
var param = command.CreateParameter();
param.ParameterName = "p0";
param.DbType = System.Data.DbType.Int32;
param.Value = DBNull.Value;
command.Parameters.Add(param);

【讨论】:

我想创建带有命名参数的查询,就像 MySQL 和 MS SQL 支持的查询一样。

以上是关于使用 Snowflake 进行参数化查询并从 Snowflake .NET 连接器传递值的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 sqlcommandbuilder 的参数化参数 [无数据适配器]

从 Azure Function App 调用 Snowflake 过程

Javascript ADO 记录集打开方法不起作用。参数化查询

使用dapper进行参数化查询

接收 std::pair 作为参数并从花括号列表初始化推导出类型的模板化函数

如何正确使用 PDO 对象进行参数化 SELECT 查询