Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
здравствуйте уважаемые форумчане, с MS SQL работаю недавно.. потому и задаю, возможно и глупый вопрос, Можно ли создать универсальную хранимую процедуру для всех имеющихся у меня баз данных. Например

CREATE PROCEDURE proc1
@BD nvarchar(50)
@tabl nvarchar(50)
AS
BEGIN
     SELECT @tabl from @okl 
END
GO

Где
@okl - название Базы
@tabl - название таблицы и данных которые мне нужно оттуда выбрать....
9 янв 14, 13:01    [15389631]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
https://www.sql.ru/faq/faq_topic.aspx?fid=104
9 янв 14, 13:06    [15389660]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
o-o
Guest
прежде чем в динамику лезть, попробуйте свою хотелку
реализовать в пределах одной базы.
сама конструкция подозрительно пафосная:
"выбрать таблицу из базы"
9 янв 14, 13:46    [15389934]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
o-o,

проблема то в том, что хотелка моя растет не по дням а по часам!:) поэтому и ХОЧУ реализовать задачу в глобальных масштабах..:)
9 янв 14, 14:07    [15390130]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
allkex
поэтому и ХОЧУ реализовать задачу в глобальных масштабах..:)

Универсальный вечный двигатель построить не получится.
9 янв 14, 14:11    [15390177]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
Glory
allkex
поэтому и ХОЧУ реализовать задачу в глобальных масштабах..:)

Универсальный вечный двигатель построить не получится.

Вечный двигатель и не хочу строить.. хочу просто универсальный..!:))
9 янв 14, 14:14    [15390204]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
allkex
хочу просто универсальный..!:))

Тоже не получится
Вернее получится настолько громоздко и плохо, что никто эти пользоваться не будет

Сообщение было отредактировано: 9 янв 14, 14:16
9 янв 14, 14:16    [15390221]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
Glory
allkex
хочу просто универсальный..!:))

Тоже не получится
Вернее получится настолько громоздко и плохо, что никто эти пользоваться не будет

а это и не для кого нибудь.. это для меня!:)
9 янв 14, 14:17    [15390234]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
dynamic sql и sp_executesql

http://technet.microsoft.com/ru-ru/library/ms188001.aspx
9 янв 14, 14:24    [15390292]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
sdet
Member

Откуда:
Сообщений: 463
allkex
Glory
пропущено...

Тоже не получится
Вернее получится настолько громоздко и плохо, что никто эти пользоваться не будет

а это и не для кого нибудь.. это для меня!:)

Железная логика
9 янв 14, 14:24    [15390295]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
sdet,

не, ну тут просто выше писали что типа "НИКТО" пользовать это "универсальное" не будет.. а я буду!
9 янв 14, 14:35    [15390397]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
allkex
а я буду!

Мыши плакали, кололись, но продолжали жрать кактусы.
9 янв 14, 14:38    [15390433]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
Glory,

ой... а Расшифруйте пожалуйста вот это.. ка кэто использовать.. а то не догоняю..)

Наверное, одним из первых вопросов, возникающих у начинающих программистов на T-SQL, это вопрос "А как получить выборку из таблицы, имя которой занесено в переменную ?"
Т.к. в T-SQL нет возможности использовать в некоторых частях запроса значения переменных, то единственным доступным решением является использование динамического запроса. Идея очень проста: в специально определнной переменной "собирается" строка запроса, которая должна выполняться. Далее эта строка запускается на выполнение. Запуск можно осуществить двумя способами
- с помощью команды EXECUTE
- с помощью системной процедуры sp_executesql.

Выглядит это приблизительно так
[src]

DECLARE @SQL varchar(8000), @table_name varchar(10)
SET @SQL = 'SELECT * FROM ' + @table_name

exec(@SQL)
--или

exec sp_executesql @SQL

[/SRC]
9 янв 14, 14:57    [15390624]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
allkex
Расшифруйте пожалуйста вот это.. ка кэто использовать..

Скопировать код
Подставить свои значения
Выполнить код
9 янв 14, 14:58    [15390641]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
Glory,

А.. я то думал тут сложнее все немного(
9 янв 14, 15:00    [15390654]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
ssas12345
Member

Откуда: откуда и все
Сообщений: 1723
заколебётесь потом отлаживать и поддерживать и будете получать ошибки RunTime и прочие гадости кода-спагетти
9 янв 14, 15:00    [15390655]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
ssas12345
заколебётесь потом отлаживать и поддерживать и будете получать ошибки RunTime и прочие гадости кода-спагетти

Так.... я совсем запутался.. тыкните носом ка кэто выполнить.. не понимаю. хоть убейте.. в хранимых процедурах этого нет.. как его выполнить то(
9 янв 14, 15:06    [15390727]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
allkex
как его выполнить то(

А где вы вообще выполняете запросы то ?

allkex
в хранимых процедурах этого нет..

Чего "этого" ?
DECLARE, EXEC - это команды языка TSQL.
9 янв 14, 15:08    [15390757]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
я пробовал вот так
сначла
DECLARE @SQL varchar(8000), @table_name varchar(10)
SET @SQL = 'SELECT * FROM ' + @table_name


далее

exec(@sql)
@table_name = Имя_таблицы
9 янв 14, 15:08    [15390761]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
что это?

exec dbo.MySuperProc 'mybase', 'mytable'
9 янв 14, 15:08    [15390767]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
allkex
я пробовал вот так
сначла
DECLARE @SQL varchar(8000), @table_name varchar(10)
SET @SQL = 'SELECT * FROM ' + @table_name



далее

exec(@sql)
@table_name = Имя_таблицы

Вам бы для начала изучить собственно TSQL. А не сразу писать код.
9 янв 14, 15:11    [15390803]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
allkex
Member

Откуда:
Сообщений: 37
Glory,

Для начала бы да.. было б вообще идеально.. но сейчас нужно вот сделать что т такое примерно вот этого.. только "НИПАНЯЯЯЯТНА"... Разжуйте пожалуйста.... как вот это выполнить...
9 янв 14, 15:13    [15390822]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
SFlash
Member

Откуда:
Сообщений: 143
У меня вообще один только вопрос.
А что будет делать эта процедура для всех баз, и к тому же еще и выборки для переменных таблиц?
Быть может, для того что вам нужно, нет такой необходимости?
9 янв 14, 15:16    [15390849]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
allkex
Разжуйте пожалуйста...

переварить и помочь срыгнуть ?
9 янв 14, 15:17    [15390864]     Ответить | Цитировать Сообщить модератору
 Re: Создание универсальной хранимой процедуры для ВСЕХ баз данных  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
allkex
здравствуйте уважаемые форумчане, с MS SQL работаю недавно.. потому и задаю, возможно и глупый вопрос, Можно ли создать универсальную хранимую процедуру для всех имеющихся у меня баз данных. Например

CREATE PROCEDURE proc1
@BD nvarchar(50)
@tabl nvarchar(50)
AS
BEGIN
     SELECT @tabl from @okl 
END
GO

Где
@okl - название Базы
@tabl - название таблицы и данных которые мне нужно оттуда выбрать....


по поводу растущей хотелки:

1. откуда возьмётся @okl ?
2. зачем @BD
3. чей это синтаксис SELECT @tabl from @okl


Отправьте хотелку книжки почитать
9 янв 14, 15:18    [15390876]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить