Когда я получаю данные из процедуры в PostgreSQL, они показывают, что они не существуют, хотя они существуют?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Когда я получаю данные из процедуры в PostgreSQL, они показывают, что они не существуют, хотя они существуют?

Сообщение 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.");
}
}
Обновленное сообщение
Если проблема может быть решена другим способом вместо действия или внутри или вне, можете ли вы показать мне, пожалуйста .
Я не могу удалить $ из app_perm_sp_pkg$get_all_tenants, это связано с администратором базы данных, и у меня нет прав доступа для изменения или удаления. Есть ли другое решение? Может ли кто-нибудь помочь мне найти его?^

Подробнее здесь: https://stackoverflow.com/questions/789 ... ugh-it-exi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»