簡體   English   中英

System.Data.Common.DbCommand:參數化查詢作為過程參數?

[英]System.Data.Common.DbCommand: Parameterized Query as Procedure Parameter?

我將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論壇上得到答案,但沒有運氣: 參數化查詢作為程序參數? | Devart論壇

我想我理解你的問題。 當嘗試通過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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM