虽然我从过去十年一直在使用 SQL Server、Oracle,但我被要求对 PostgreSQL 进行一些研究,经过一些初步调查,很明显我现在正坚持使用 Function 从 PostgreSQL 数据库中检索数据。
使用以下代码检索数据并出现错误('错误 [26000] 错误:准备好的语句“mytabletest”不存在;'执行查询时出错)
代码片段
Dim oDBCommand As DbCommand = GetDBCommand(oConnectionType, "mytabletest", CommandType.StoredProcedure)
Dim dstResults As DataSet = GetDataSet(ConnectionTypes.ODBC, oDBCommand)
Public Function GetDataReader(dbType As ConnectionTypes, command As DbCommand) As DbDataReader
Try
Dim oConnection As DbConnection = GetDBConnection(dbType)
Dim oDBTransaction As DbTransaction = oConnection.BeginTransaction
command.Connection = oConnection
command.Transaction = oDBTransaction
'GETTING ERROR ON FOLLOWING LINE
'ERROR [26000] ERROR: prepared statement "mytabletest" does not exist;
'Error while executing the query
return command.ExecuteReader()
Catch ex As Exception
Throw ex
Finally
End Try
Return Nothing
End Function
我目前正在处理的环境如下:-
32位机。 视觉工作室 2010 + SP1 ODBC 提供程序:PostgreSQL Unicode 9.01.02.00 ADO.Net (System.Data.Odbc)
请注意,我愿意接受任何建议,即如果我完全做错了或部分做错了等等。请随时写信。
为了方便您创建相同的环境,请使用下表/函数定义。
--- Simple table to make things easier to understand. <br>
CREATE TABLE mytable
(
messagetypeid integer NOT NULL,
messagetype character varying(100) NOT NULL
)
-- Function to retrieve data. <br>
CREATE OR REPLACE FUNCTION mytabletest() <br>
RETURNS SETOF refcursor AS $$
DECLARE
ref1 refcursor;
BEGIN
OPEN ref1 FOR SELECT * FROM mytable;
RETURN NEXT ref1;
END;
$$ LANGUAGE plpgsql;
请注意:
If I use <br>
Dim oDBCommand As DbCommand = GetDBCommand(oConnectionType, "SELECT * FROM mytable", CommandType.Text)
然后系统设法从数据库中检索信息而没有任何问题,但是,正如我所提到的,一旦我们使用“功能”,它就会引发异常。
在我从互联网上搜索任何解决方案失败的努力中,有人提到应该用小写创建表,所以为了它,我用小写重新创建,但是问题仍然存在。