为什么在尝试执行pgsql命令后出现语法错误?

时间:2019-10-02 08:40:53

标签: c# postgresql

我有一个用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:对不起,我奇怪的命名约定。

0 个答案:

没有答案