Я создал хранимую процедуру в PostgreSQL следующим образом:
CREATE OR REPLACE PROCEDURE app_sec."app_perm_sp_pkg$get_all_tenants"(
IN p_tenant_cur refcursor,
OUT p_status integer,
OUT p_status_desc text)
Я пытаюсь получить данные, вызвав эту хранимую процедуру в PostgreSQL, используя этот код C#, но получаю ошибку:
42883: функция app_perm_sp_pkg$get_all_tenants(refcursor, целое число, текст) не существует
в cmd.ExecuteNonQuery()
public ResponseStatus GetTenantList()
{
ResponseStatus response = new ResponseStatus();
try
{
DataSet ds = new DataSet();
string cmdString = "";
OpenDB();
string sqlstr = @"
DO $$
DECLARE
p_tenant_cur REFCURSOR;
p_status INTEGER;
p_status_desc TEXT;
BEGIN
-- Call the stored procedure to initialize the cursor
PERFORM app_perm_sp_pkg$get_all_tenants(p_tenant_cur, p_status, p_status_desc);
END $$;";
using (var command = new NpgsqlCommand(sqlstr, postcon))
{
command.ExecuteNonQuery(); // Execute the DO block to set up the cursor
}
// Now fetch the results from the cursor
string fetchSql = "FETCH ALL FROM p_tenant_cur;";
using (var fetchCommand = new NpgsqlCommand(fetchSql, postcon))
{
using (NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(fetchCommand))
{
adapter.TableMappings.Add("Table1", "p_tenant_cur");
adapter.Fill(ds);
}
}
response.ds = ds;
CloseDB();
}
catch (Exception ex)
{
}
return response;
}
Я пытаюсь подтвердить, что хранимая процедура не существует или создана с использованием C#
, но она показывает, что она существует, используя
string checkProcSql = @"
SELECT proname
FROM pg_proc
JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
WHERE proname = 'app_perm_sp_pkg$get_all_tenants'
AND nspname = 'app_sec'; ";
using (var checkCommand = new NpgsqlCommand(checkProcSql, postcon))
{
var result = checkCommand.ExecuteScalar();
if (result == null)
{
throw new Exception("Stored procedure does not exist.");
}
}
Обновлено сообщение
Я пробую, как показано ниже, но не работает и выдает ошибку
42883: функция app_perm_sp_pkg$get_all_tenants(refcursor, целое число, текст) не существует
public ResponseStatus GetTenantList()
{
ResponseStatus response = new ResponseStatus();
try
{
DataSet ds = new DataSet();
OpenDB();
using (var command = new NpgsqlCommand("SELECT app_sec.\"app_perm_sp_pkg$get_all_tenants\"('p_tenant_cur', 'p_status', 'p_status_desc');", postcon))
{
using (NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(command))
{
adapter.TableMappings.Add("Table1", "p_tenant_cur");
adapter.Fill(ds);
}
}
response.ds = ds;
CloseDB();
}
catch (Exception ex)
{
response.Status = "0";
response.StatusDesc = Common.GetStringWithoutQuate(ex.Message);
}
return response;
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... ugh-it-exi
Когда я получаю данные из процедуры в PostgreSQL, они показывают, что они не существуют, хотя они существуют? ⇐ C#
Место общения программистов C#
1726555234
Anonymous
Я создал хранимую процедуру в PostgreSQL следующим образом:
CREATE OR REPLACE PROCEDURE app_sec."app_perm_sp_pkg$get_all_tenants"(
IN p_tenant_cur refcursor,
OUT p_status integer,
OUT p_status_desc text)
Я пытаюсь получить данные, вызвав эту хранимую процедуру в PostgreSQL, используя этот код C#, но получаю ошибку:
42883: функция app_perm_sp_pkg$get_all_tenants(refcursor, целое число, текст) не существует
в cmd.ExecuteNonQuery()
public ResponseStatus GetTenantList()
{
ResponseStatus response = new ResponseStatus();
try
{
DataSet ds = new DataSet();
string cmdString = "";
OpenDB();
string sqlstr = @"
DO $$
DECLARE
p_tenant_cur REFCURSOR;
p_status INTEGER;
p_status_desc TEXT;
BEGIN
-- Call the stored procedure to initialize the cursor
PERFORM app_perm_sp_pkg$get_all_tenants(p_tenant_cur, p_status, p_status_desc);
END $$;";
using (var command = new NpgsqlCommand(sqlstr, postcon))
{
command.ExecuteNonQuery(); // Execute the DO block to set up the cursor
}
// Now fetch the results from the cursor
string fetchSql = "FETCH ALL FROM p_tenant_cur;";
using (var fetchCommand = new NpgsqlCommand(fetchSql, postcon))
{
using (NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(fetchCommand))
{
adapter.TableMappings.Add("Table1", "p_tenant_cur");
adapter.Fill(ds);
}
}
response.ds = ds;
CloseDB();
}
catch (Exception ex)
{
}
return response;
}
Я пытаюсь подтвердить, что хранимая процедура не существует или создана с использованием C#
, но она показывает, что она существует, используя
string checkProcSql = @"
SELECT proname
FROM pg_proc
JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
WHERE proname = 'app_perm_sp_pkg$get_all_tenants'
AND nspname = 'app_sec'; ";
using (var checkCommand = new NpgsqlCommand(checkProcSql, postcon))
{
var result = checkCommand.ExecuteScalar();
if (result == null)
{
throw new Exception("Stored procedure does not exist.");
}
}
[b]Обновлено сообщение[/b]
Я пробую, как показано ниже, но не работает и выдает ошибку
42883: функция app_perm_sp_pkg$get_all_tenants(refcursor, целое число, текст) не существует
public ResponseStatus GetTenantList()
{
ResponseStatus response = new ResponseStatus();
try
{
DataSet ds = new DataSet();
OpenDB();
using (var command = new NpgsqlCommand("SELECT app_sec.\"app_perm_sp_pkg$get_all_tenants\"('p_tenant_cur', 'p_status', 'p_status_desc');", postcon))
{
using (NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(command))
{
adapter.TableMappings.Add("Table1", "p_tenant_cur");
adapter.Fill(ds);
}
}
response.ds = ds;
CloseDB();
}
catch (Exception ex)
{
response.Status = "0";
response.StatusDesc = Common.GetStringWithoutQuate(ex.Message);
}
return response;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78991700/when-i-get-data-from-procedure-in-postgresql-it-shows-not-exist-although-it-exi[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия