我有一个用pgsql编写的有效命令,我想在我的C#代码中执行。我测试了该命令,它在我的数据库管理软件中可以正常工作。
我正在使用一些“硬编码”查询,我知道这不是最好的解决方案,但起初我想确保它能正常工作。
以下是我的代码:
private void LoadAllConcurrences()
{
_concurrences = new ObservableCollection<Concurrence>();
using (var conn = this.App.GetConnection(this.App.Databases.LocalStorage))
{
var cmd = conn.CreateCommand(Query);
cmd.ExecuteNonQuery();
var dr = conn.CreateReader<Concurrence>(AnotherQuery);
foreach (var item in dr)
this._concurrences.Add(item);
}
}
问题出在“查询”中,它是以下命令:
DO $$
DECLARE
r RECORD;
indexValue INTEGER;
BEGIN
DELETE FROM arazas.tags_konkurencia WHERE shopid NOT IN (SELECT shopid
FROM arukeresok2.shops)
FOR r IN SELECT * FROM arukeresok2.shops LOOP
IF r.shopid NOT IN (SELECT shopid FROM arazas.tags_konkurencia) THEN
INSERT INTO arazas.tags_konkurencia(shopid, tagid) VALUES (r.shopid, null);
END IF;
END LOOP;
END$$;
因此,当执行此命令时,出现以下语法错误:““ FOR”处或附近的语法错误”。
P.S:对不起,我奇怪的命名约定。