Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 rowtype  [new]
Начиналкин
Guest
В Oracle, задавай параметры процедуры,
при указании типа параметра можно ссослаться на тип данных существующей таблицы
например
MyParam myscheme.maytable.mycolumn%type
что означает, что параметр MyParam имеет тип такой же как поле mycolumn в таблице cheme.maytable
плюс такого подхода имхо в том, что при изменении типа (например увеличили длину поля таблицы) нет необходимости переписывать и перекомпиливать процу/функцию.

Вопрос есть ли такой подход в MS SQL?
30 сен 09, 21:15    [7727274]     Ответить | Цитировать Сообщить модератору
 Re: rowtype  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Начиналкин, Есть пользовательские типы табличного типа:
USE tempdb
GO

CREATE TYPE MyTable AS TABLE(col1 int)
GO

CREATE TABLE Table1 (col1 int)
GO

CREATE PROC Proc1
  @MyTable MyTable READONLY
AS
  INSERT Table1 (col1) SELECT col1 FROM @MyTable
GO
автор
плюс такого подхода имхо в том, что при изменении типа (например увеличили длину поля таблицы) нет необходимости переписывать и перекомпиливать процу/функцию.
Абалдеть, какой плюс. Поменял я тип с int на varchar, а в проце как int обрабатываю.
Модератор: Тема перенесена из форума "Microsoft SQL Server".


Сообщение было отредактировано: 30 сен 09, 22:03
30 сен 09, 22:03    [7727396]     Ответить | Цитировать Сообщить модератору
 Re: rowtype  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 911
pkarklin

Абалдеть, какой плюс. Поменял я тип с int на varchar, а в проце как int обрабатываю.


+1

Было такое, сначала сменили тип поля в таблице а потом программисты внесли изменения в процедуру без учета изменений в структуре таблицы. Причем сразу на production сервере. Меня среди ночи подняли, разгребать все это. С тех пор доступа к серверам нет ни у одного программиста. Но тем не менее удобство использования этого способа объявления переменной при изменении размера поля при неизменном типе остается.
1 окт 09, 02:21    [7727760]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить