powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / CREATE OR ALTER PROCEDURE... а для других объктов?
17 сообщений из 17, страница 1 из 1
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648800
Олег Ворбчиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE OR ALTER PROCEDURE...
А как можно подобное провернуть с таблицами, тригерами и т.д. при выполнении SQL скрипта?
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648804
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно можно ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648810
Олег Ворбчиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос в том, как?
Для таблиц именно эта конструкция не подходит.
А нужно проверить наличие таблицы и изменить или зоздать ее.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648811
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторALTER TABLEChanges a table by adding, dropping, or modifying columns or integrity constraints. Available in SQL, DSQL, and isql.

ALTER TABLE table <operation> [, <operation> …];

<operation> = {ADD <col_def>
| ADD <tconstraint>

| ALTER [COLUMN] column_name <alt_col_clause>
| DROP col
| DROP CONSTRAINT constraint}

<alt_col_clause> = {TO new_col_name
| TYPE new_col_datatype
| POSITION new_col_position}

<col_def> = col {<datatype> | COMPUTED [BY] (<expr>) | domain}

[DEFAULT {literal | NULL | USER}]

[NOT NULL]

[<col_constraint>]

[COLLATE collation]

<datatype> =
{SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION}[<array_dim>]

| (DATE | TIME | TIMESTAMP} [<array_dim>]

| {DECIMAL | NUMERIC} [(precision [, scale])] [<array_dim>]
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [(int)]
[<array_dim>] [CHARACTER SET charname]

| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [(int)] [<array_dim>]

| BLOB [SUB_TYPE {int | subtype_name}] [SEGMENT SIZE int]
[CHARACTER SET charname]

| BLOB [(seglen [, subtype])]<array_dim> = [[x:]y [, [x:]y …]]

<expr> = A valid SQL expression that results in a single value.

<col_constraint> = [CONSTRAINT constraint]

{ UNIQUE

| PRIMARY KEY

| REFERENCES other_table [(other_col [, other_col …])]

[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

| CHECK (<search_condition>)}

<tconstraint> = [CONSTRAINT constraint]

{{PRIMARY KEY | UNIQUE} (col [, col …])

| FOREIGN KEY (col [, col …]) REFERENCES other_table

[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

| CHECK (<search_condition>)}

<search_condition> = <val> <operator> {<val> | (<select_one>)}
| <val> [NOT] BETWEEN <val> AND <val>

| <val> [NOT] LIKE <val> [ESCAPE <val>]

| <val> [NOT] IN (<val> [, <val> …] | <select_list>)

| <val> IS [NOT] NULL

| <val> {>= | <=}
| <val> [NOT] {= | < | >}

| {ALL | SOME | ANY} (<select_list>)

| EXISTS (<select_expr>)

| SINGULAR (<select_expr>)

| <val> [NOT] CONTAINING <val>

| <val> [NOT] STARTING [WITH] <val>

| (<search_condition>)

| NOT <search_condition>

| <search_condition> OR <search_condition>

| <search_condition> AND <search_condition>

<val> = { col [<array_dim>] | :variable

| <constant> | <expr> | <function>

| udf ([<val> [, <val> …]])

| NULL | USER | RDB$DB_KEY | ? }

[COLLATE collation]

<constant> = num | 'string' | charsetname 'string'

<function> = COUNT (* | [ALL] <val> | DISTINCT <val>)

| SUM ([ALL] <val> | DISTINCT <val>)

| AVG ([ALL] <val> | DISTINCT <val>)

| MAX ([ALL] <val> | DISTINCT <val>)

| MIN ([ALL] <val> | DISTINCT <val>)

| CAST (<val> AS <datatype>)

| UPPER (<val>)

| GEN_ID (generator, <val>)

<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}

<select_one> = SELECT on a single column; returns exactly one value.

<select_list> = SELECT on a single column; returns zero or more values.

<select_expr> = SELECT on a list of values; returns zero or more values.
Best regards,
Dnico.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648825
Олег Ворбчиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...table by adding, dropping, or modifying columns...
И это все для существующей таблицы! А если она (таблица) создается впервые....
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648847
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тогда CREATE TABLE ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648862
Олег Ворбчиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну спасибо! а тоя и не знал....

я имел ввиду что-то типа
if exists и т.д. и т.п.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648866
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так для таких целей используются системные таблицы. Там есть все про таблицы и поля ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648882
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В файле описание системных таблиц ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648884
Олег Ворбчиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И про это слышали :)

нужна разборка в скрипте создания/изменения базы, выполняемая скажем в консоли...

Проще всего, конечно же

DROP TABLE blabla

CREATE TABLE blabla

и периодически сваливаться на DROP`е если таблицы нет....
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648900
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только через клиента ... есть такая программка, которая генерит скрипт обновления БД. IBCompare .

Best regards,
Dnico.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648905
Олег Ворбчиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример из MS SQL:

/****** Object: Table [dbo].[CACHE_PARAM] Script Date: 13.08.2004 14:54:29 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[CACHE_PARAM]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [CACHE_PARAM]
GO

CREATE TABLE [CACHE_PARAM] (
[ID_LICH] [int] NOT NULL ,
[ID_PARAM] [int] NOT NULL ,
[P_TYPE] [int] NOT NULL ,
[VAL] [numeric](18, 7) NOT NULL
) ON [PRIMARY]
GO

А в берде это как реализовать? вот в чем вопрос!
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648916
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, такого я не видел. Может в новой версии это и сделают.

Best regards,
Dnico.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648924
Олег Ворбчиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А жаль.... :(

Спасибо!
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648970
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за имя и версия сервера?
Выдержка из док-ции по FB1.5:

(1.0) RECREATE TABLE
This new DDL command lets you create a new structure for an existing table without needing to drop
the old table first. The syntax is identical to CREATE TABLE.
Observe that RECREATE TABLE does not preserve the data in the old table.
Available in SQL and DSQL.

Причем еще из 1.0 пошло ;-)

------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32648981
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Uskov - Упс ... Я же говорил что могут с делать в новой версии ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
CREATE OR ALTER PROCEDURE... а для других объктов?
    #32649087
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олег ВорбчиковВот пример из MS SQL:

/****** Object: Table [dbo].[CACHE_PARAM] Script Date: 13.08.2004 14:54:29 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[CACHE_PARAM]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [CACHE_PARAM]
GO

CREATE TABLE [CACHE_PARAM] (
[ID_LICH] [int] NOT NULL ,
[ID_PARAM] [int] NOT NULL ,
[P_TYPE] [int] NOT NULL ,
[VAL] [numeric](18, 7) NOT NULL
) ON [PRIMARY]
GO

А в берде это как реализовать? вот в чем вопрос!IBEScript это всё умеет.
Брать на сайте http://ibexpert.com
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / CREATE OR ALTER PROCEDURE... а для других объктов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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