npgsql - 无法从存储过程中获取结果
问题描述
我有一个名为的存储过程get_all_buildings()
,其主体定义如下:
SELECT * FROM building;
我正在调用这样的过程:
using var connection = new NpgsqlConnection(connectionString);
await connection.OpenAsync();
var sql = "CALL get_all_buildings();";
using var cmd = new NpgsqlCommand(sql, connection);
using var reader = await cmd.ExecuteReaderAsync();
while(reader.Read())
{
doSomething();
}
我永远不会打电话给doSomething()
. 如果我用存储过程的定义替换查询文本,我可以点击调用doSomething()
. 如果我在 PGAdmin 中执行上面的 SQL,我会看到结果返回(尽管默认视图是消息选项卡)。唯一没有返回结果的情况是当我以这种方式调用该过程时。我在调用其他使用IN/OUT
变量执行的过程以及对ExecuteScalarAsync()
. 我尝试使用同步调用ExecuteReader()
仍然没有运气。
解决方案
PostgreSQL 存储过程不返回数据——您可能希望创建一个函数。本文很好地总结了过程和函数之间的差异。
推荐阅读
- javafx - 防止表视图中第一列的重新排序?
- python-3.x - 在python中生成时间间隔数组
- swift - UIButton 作为子视图:如何添加 IBAction
- javascript - 如何继承Odoo网站中的点击方法
- node.js - 安装 Angular CLI 时出错?
- java - 如何在 HTMLUnit 中正确使用 getByXPath?
- python - opencv 和 dlib 的视频滞后问题
- postgresql - 有没有办法在不等待完成的情况下运行 SQL 查询并断开连接?
- php - PHP - 检查图像是在 img src 中还是直接在浏览器中加载?
- r - 如何处理R中逻辑类型列中的缺失值