c# - System.Data.Common.DbCommand : Parameterized Query as Procedure Parameter?

标签 c# sql postgresql

我将 PostgreSQL 中的过程定义为:

CREATE OR REPLACE FUNCTION CreateCursorC(text, text)
 RETURNS text
 LANGUAGE c
AS '$libdir/mylibs', $function$createcursorc$function$

执行示例:

SELECT CreateCursorC('cursor_name', 'SELECT a FROM x WHERE a=''text''');

当然我想使用参数(DbCommand.Parameters)。像这样:

SELECT CreateCursorC($1, 'SELECT a FROM x WHERE a=$2');

不幸的是,它不起作用,因为参数 $2 在引号中。 有没有办法使用参数而不是通过编写自定义 SQL 转义函数来完成此任务?

我试图在 Devart 论坛上得到答案,但没有成功: Parameterized Query as Procedure Parameter? | Devart Forums

最佳答案

我想我理解你的问题。在尝试通过 C# 在 MySQL 中设置包含 LIKE 表达式的参数化查询时,我遇到了类似的问题。

在 LIKE 表达式的情况下,我发现的技巧是使 % 字符成为参数的一部分。在您的情况下,这种相同类型的逻辑可能适用于您引用的文本。

这是一段代码,展示了我在我的案例中所做的事情:

IDBCommandParameters cmdParams = dbContext.CreateDBCommandParameters();

cmdParams.AddParameter(QueryConstants.likeParam, string.Format("%{0}%", likeFilter));

List<TQueryResult> companies = LoadModelList<TQueryResult>(dbContext.Find(QueryConstants.findCompaniesLikeStatement, cmdParams, false), "");

return companies;

关于c# - System.Data.Common.DbCommand : Parameterized Query as Procedure Parameter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24019960/

相关文章:

sql - SQLite名称列与预期不同

c# - 帮助处理用户关系

postgresql - 将表数据类型从 varchar 更改为文本 PostgreSQL

c# - 使用 DrawingContext.DrawRectangle 绘制的矩形会阻塞鼠标

c# - 通过指定属性的唯一性从 List<> 获取对象

c# - 如何在 Visual Studio 2010 的数据库中包含图像

c# - Mono/Ubuntu - 冲突的定义

sql - DB2:使用选择插入,每次插入时为每一个新行增加一列?

sql - Postgresql:文本/varchar 的行内与行外

sql - Postgres 一次更新多行