Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу вызвать функцию((( / 6 сообщений из 6, страница 1 из 1
01.12.2015, 23:26
    #39117898
IPmen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу вызвать функцию(((
Есть функция
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
--select "fnc_create_object"('ddd','ddd','7b70cf00-969e-11e5-8e18-02c2c61bc579', true,'sss')
CREATE OR REPLACE FUNCTION  fnc_create_object
(
	 _ContextName varchar(50),
	 _ObjectType varchar(50),
	 _OwnerId uuid,
	 _Accessed boolean,
	 _Attributes varchar(50)
)
RETURNS uuid  AS 
$BODY$
DECLARE 
 returnid uuid; 
 BEGIN
	insert into "Objects" 
	(
		"ContextName",
		"ObjectType",
		"OwnerId",
		"Created",
		"Updated",
		"Accessed",
		"Attributes"
	)
	values
	(
		_ContextName,
		_ObjectType,
		_OwnerId,
		CURRENT_TIMESTAMP,
		CURRENT_TIMESTAMP,
		_Accessed,
		_Attributes
	) RETURNING "Id" INTO returnid ;
	return returnid;
end
$BODY$
LANGUAGE 'plpgsql'
 


вызываю
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
 _objectRepository.Insert(speedUpObject, "public.fnc_create_object", sqlTransaction);

/////
 public Guid Insert(T entity, string insertSql, NpgsqlTransaction sqlTransaction)
        {
            Guid i;
            using (var cmd = _conn.CreateCommand())
            {
                cmd.CommandText = insertSql;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Transaction = sqlTransaction;
                InsertCommandParameters(entity, cmd);
                i = new Guid(cmd.ExecuteScalar().ToString());
            }
            return i;
        }

//////
 protected override void InsertCommandParameters(Object entity, NpgsqlCommand cmd)
        {
            var contextParameter = cmd.CreateParameter();
            contextParameter.ParameterName = "_ContextName";
            contextParameter.DbType = System.Data.DbType.String;
            contextParameter.Value = entity.ContextName;

            var ownerIdParameter = cmd.CreateParameter();
            ownerIdParameter.ParameterName = "_OwnerId";
            ownerIdParameter.DbType = System.Data.DbType.Guid;
            ownerIdParameter.Value = entity.OwnerId;


            var  accessedParameter = cmd.CreateParameter();
            accessedParameter.ParameterName = "_Accessed";
            accessedParameter.DbType = System.Data.DbType.Boolean;
            accessedParameter.Value = entity.Accessed;

            var attributesParameter = cmd.CreateParameter();
            attributesParameter.ParameterName = "_Attributes";
            attributesParameter.DbType = System.Data.DbType.String;
            attributesParameter.Value = entity.Attributes;

            var objectTypeParameter = cmd.CreateParameter();
            objectTypeParameter.ParameterName = "_ObjectType";
            objectTypeParameter.DbType = System.Data.DbType.String;
            objectTypeParameter.Value = entity.ObjectType;


        }


Код: xml
1.
2.
 <add name="SpeedUpConnection" connectionString="Server=127.0.0.1;Port=5432;User Id=postgres;Password=1;Database=SpeedUp;Pooling=false"
       providerName="Npgsql" />


выдаёт ошибку
42883: function public.fnc_create_object() does not exist
...
Рейтинг: 0 / 0
02.12.2015, 01:19
    #39117936
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу вызвать функцию(((
Штатный телепат информирует, что в insertSql идет вызов функции без параметров.

И хоть заинформируй ты команду о своих createParams ах, если ты вызываешь ф-ю без параметров - и ее не существует, значит, ее не существует.

Ты создаешь параметры, создаешь параметры...

А какой SQL их юзает?
select fnc_create_object()?
Туши свет.
...
Рейтинг: 0 / 0
02.12.2015, 10:37
    #39118081
IPmen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу вызвать функцию(((
Hawkmoon
select fnc_create_object()?


Код: plsql
1.
select "fnc_create_object"('ddd','ddd','7b70cf00-969e-11e5-8e18-02c2c61bc579', true,'sss')


HawkmoonИ хоть заинформируй ты команду о своих createParams ах, если ты вызываешь ф-ю без параметров - и ее не существует, значит, ее не существует.


не совсем понял я же создаю параметры
...
Рейтинг: 0 / 0
02.12.2015, 11:39
    #39118147
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу вызвать функцию(((
IPmenHawkmoon
select fnc_create_object()?


Код: plsql
1.
select "fnc_create_object"('ddd','ddd','7b70cf00-969e-11e5-8e18-02c2c61bc579', true,'sss')


HawkmoonИ хоть заинформируй ты команду о своих createParams ах, если ты вызываешь ф-ю без параметров - и ее не существует, значит, ее не существует.


не совсем понял я же создаю параметры

Ваш код никакие параметры в запрос не передает. Как надо делать так чтобы передавал - это вопрос не по PostgreSQL а по используемому вами языку программирования.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
03.12.2015, 00:01
    #39118862
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу вызвать функцию(((
IPmen,

Тебе PG черным по-белому говорит:

function public.fnc_create_object ( ) does not exist.

она может сказать также на:

select public.fnc_create_object(5)
функция public.fnc_create_object (integer) не существует

Или на:
select fnc_create_object('ddd','ddd','7b70cf00-969e-11e5-8e18-02c2c61bc579', true,'sss')
функция fnc_create_object (unknown, unknown, unknown, boolean, unknown) не существует

Но у тебя ругается именно на пустые скобки.

Следовательно - вызов в SQL - БЕЗ ПАРАМЕТРОВ.
Подсказка:
...
Рейтинг: 0 / 0
03.12.2015, 00:07
    #39118866
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу вызвать функцию(((
http://www.npgsql.org/doc/manual-2.2.html

ctrl-F -> Using parameters in a query

new NpgsqlCommand("select * from tablea where column1 = :value1 ", conn)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу вызвать функцию((( / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]