postgres bytea sql 在使用一个 sql 脚本 c# .net 插入和/或更新时出现参数错误

问题描述 投票:0回答:1
我在将 bytea 流插入/更新到 postgres 表时遇到问题。

如果我单独尝试的话,插入和更新工作正常..

两者一起...发生错误()..

这是工作示例...

//INSERT ... is working! string MySqlInsertUpdateCommand = $"INSERT INTO ic_plc_streams(plcidx, stream, mytimestamp, streamlength) VALUES('{PlcIdx}',@stream,'{DateTime.Now}','{MyStream.Length}'); "; //UPDATE ... is working! string MySqlInsertUpdateCommand = $"UPDATE ic_plc_streams SET stream = @stream, mytimestamp='{DateTime.Now}', streamlength='{MyStream.Length}' WHERE plcidx='{PlcIdx}'; "; <br> //runs twice... using (var command = new NpgsqlCommand(MySqlInsertUpdateCommand, conn)) { NpgsqlParameter param = command.CreateParameter(); param.ParameterName = "@stream"; param.NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Bytea; param.Value = MyStream; command.Parameters.Add(param); conn.Open(); command.ExecuteNonQuery(); } <br> //not WORKING //insert or update! string MySqlInsertUpdateCommand = $"do $$ begin UPDATE ic_plc_streams SET stream = @stream, mytimestamp='{DateTime.Now}', streamlength='{MyStream.Length}' WHERE plcidx='{PlcIdx}'; " + $"if not found Then INSERT INTO ic_plc_streams(plcidx, stream, mytimestamp, streamlength) VALUES('{PlcIdx}',@stream,'{DateTime.Now}','{MyStream.Length}'); " + $"End if; end$$"; using (var command = new NpgsqlCommand(MySqlInsertUpdateCommand, conn)) { NpgsqlParameter param = command.CreateParameter(); param.ParameterName = "@stream"; param.NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Bytea; param.Value = MyStream; command.Parameters.Add(param); conn.Open(); command.ExecuteNonQuery(); }
Errormessage: (postgres 9.4)
{"42883: Operator existiert nicht: @ bytea"}
(UPDATE ic_plc_streams SET stream = @stream, mytimestamp='23.10.2023 14:27:54', streamlength='28' WHERE plcidx='0'
)
Kein Operator stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
也许有人可以帮忙...?

postgresql parameters sql-scripts bytea
1个回答
0
投票

DO

块中没有参数。您可以创建一个真实的函数或过程。您还可以编写一个 
upsert
 语句来插入或更新记录。

© www.soinside.com 2019 - 2024. All rights reserved.