Услышал от коллеги, что в Access 2003 появилась возможность использовать хранимые процедуры?! Я посмотрел help, в help'e по MS Access 2003 есть упоминание о конструкции CREATE PROCEDURE... но с Access 2003 я не работал, если создать хранимую процедуру можно, то как(такого объекта как stored procedure я не увидел)?
Здравствуйте, white_znake, Вы писали:
_>Услышал от коллеги, что в Access 2003 появилась возможность использовать хранимые процедуры?! Я посмотрел help, в help'e по MS Access 2003 есть упоминание о конструкции CREATE PROCEDURE... но с Access 2003 я не работал, если создать хранимую процедуру можно, то как(такого объекта как stored procedure я не увидел)?
Насколько мне известно, CREATE PROCEDURE появился в Jet начиная с 4-ой версии, т.е. с Access 2000. Полноценной хранимой процедурой это не назовешь — в ней может быть определен только один оператор. Более того, насколько я видел, Access не видит особой разницы между PROCEDURE и VIEW, в интерфейсе и то и другое называется "запрос". Я разбирал структуру базы через ADOX и видел что в процессе жизни базы иногда VIEW может почему-то превратиться в PROCEDURE либо наоборот. Так что не надо разводить кипиш, хранимых процедур в Access нету и уже не будет.
Здравствуйте, nzeemin, Вы писали:
N>Здравствуйте, white_znake, Вы писали:
_>>Услышал от коллеги, что в Access 2003 появилась возможность использовать хранимые процедуры?! Я посмотрел help, в help'e по MS Access 2003 есть упоминание о конструкции CREATE PROCEDURE... но с Access 2003 я не работал, если создать хранимую процедуру можно, то как(такого объекта как stored procedure я не увидел)?
N>Насколько мне известно, CREATE PROCEDURE появился в Jet начиная с 4-ой версии, т.е. с Access 2000. Полноценной хранимой процедурой это не назовешь — в ней может быть определен только один оператор. Более того, насколько я видел, Access не видит особой разницы между PROCEDURE и VIEW, в интерфейсе и то и другое называется "запрос". Я разбирал структуру базы через ADOX и видел что в процессе жизни базы иногда VIEW может почему-то превратиться в PROCEDURE либо наоборот. Так что не надо разводить кипиш, хранимых процедур в Access нету и уже не будет.
Спасибо за содержательный ответ.
Я попробовал создать хранимую процедуру, ниже привожу код:
CREATE PROCEDURE AddObjectToTask @id_object number, @id_application number
AS
SELECT count(*) FROM UsingObjects WHERE Id_Appication = @id_application AND Id_Object = @id_object
В результате, все бы хорошо, но запрос не хочет сохраняться из-за ошибки:"Syntax error in CREATE TABLE statement", не могли бы посмотреть в чем проблема?
Здравствуйте, white_znake, Вы писали:
_>Я попробовал создать хранимую процедуру, ниже привожу код:
CREATE PROCEDURE AddObjectToTask @id_object number, @id_application number
AS
SELECT count(*) FROM UsingObjects WHERE Id_Appication = @id_application AND Id_Object = @id_object
_>В результате, все бы хорошо, но запрос не хочет сохраняться из-за ошибки:"Syntax error in CREATE TABLE statement", не могли бы посмотреть в чем проблема?
1. Если вы работаете с базой из MSAccess — идем в Сервис — Параметры — Таблицы и запросы, ставим галочку под "Синтаксис для SQL Server (ANSI 92)", затем ОК
2. Немного меняем оператор создания процедуры:
CREATE PROCEDURE AddObjectToTask (@id_object number, @id_application number)
AS
SELECT count(*) FROM UsingObjects WHERE Id_Appication = @id_application AND Id_Object = @id_object
Выполняем. В списке запросов появляется AddObjectToTask, открываем для него конструктор, переходим в режим SQL, видим:
PARAMETERS id_object IEEEDouble, id_application IEEEDouble;
SELECT Count(*) AS Выражение1
FROM UsingObjects
WHERE (((UsingObjects.Id_Appication)=[@id_application]) AND ((UsingObjects.Id_Object)=[@id_object]));
1. Для того чтобы сказать "спасибо", нет никакой необходимости цитировать все предыдущее сообщение.
2. Для говорения "спасибо", вообще нет необходимости писать сообщение, для этого есть оценки.
Здравствуйте, wildwind, Вы писали:
W>Надо бы это в FAQ. А то народ периодически недоумевает: почему запрос в Access выполняется, а через ADO/ODBC/etc ни фига.
Такое скорее может быть связано с тем что в среде MSAccess по-умолчанию снят флажок и используется свой синтаксис, а при работе через ADO — всегда используется SQL92.
Здравствуйте, nzeemin, Вы писали:
N>Такое скорее может быть связано с тем что в среде MSAccess по-умолчанию снят флажок и используется свой синтаксис, а при работе через ADO — всегда используется SQL92.