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

Откуда:
Сообщений: 182
Хочу написать ХП, которой в качестве параметра буду передавать имя временной таблицы, с которой она должна будет работать. Как это сделать?
21 дек 09, 08:37    [8093724]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
В чём проблема возникла ?
21 дек 09, 09:03    [8093788]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
gigadedushka
Member

Откуда:
Сообщений: 182
Хочу написать хранимую процедуру, которую в запросе буду использовать несколько раз, но работать она будет над разными таблицами в этом запросе. Я конечно могу задать требование, что эта процедура должна работать с таблицей, например #TEMP, но тогда ее постоянно переназначать надо, что очень не приятно. Можно ли в ХП передать имя таблицы, над которой она будет работать?
21 дек 09, 09:39    [8093894]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
gigadedushka
Member

Откуда:
Сообщений: 182
Насколько я знаю, саму таблицу в качестве параметра в ХП передать не получится
21 дек 09, 09:40    [8093896]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Можно
Динамический sql вам в помощь
21 дек 09, 10:03    [8093993]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
vanezy
Member

Откуда: Ekaterinburg->Moscow->Frankfurt
Сообщений: 122
в чем проблема передать в хп имя таблицы? делаешь параметр процедуры типа sysname допустим
и в хранимой процедуре запрос будет в виде динамического sql, там уж как напишешь
21 дек 09, 10:04    [8093999]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Автор, а что такое "переназначение таблицы" ?
21 дек 09, 10:06    [8094001]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
В 2008-м можно передавать параметр табличного UDT в режиме "READ ONLY".
21 дек 09, 10:06    [8094005]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
gigadedushka
Member

Откуда:
Сообщений: 182
По порядку:
1. Переназначение таблицы: у меня есть большой запрос, который состоит из нескольких таблиц, разных имен. ХП обрабатывает таблицу с одним именем, заранее в ней определенным. Придется, если не передавать параметр - имя таблицы, переназначать эти несколько таблиц в одну с фиксированным именем, затем ее дропать и браться за следующую.
2. SQL если что 2005
3. Приведите пример, самый простой, где в ХП передается имя таблицы, а на выходе select из этой таблицы.
21 дек 09, 10:21    [8094080]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
gigadedushka
По порядку:
1. Переназначение таблицы: у меня есть большой запрос, который состоит из нескольких таблиц, разных имен. ХП обрабатывает таблицу с одним именем, заранее в ней определенным. Придется, если не передавать параметр - имя таблицы, переназначать эти несколько таблиц в одну с фиксированным именем, затем ее дропать и браться за следующую.

Т.е. у вас несколько одинаковых таблиц по стркутуре и названию полей, которые нужно обрабатывать одинаковым алгоритмом ?
Если да, то почему их несколько, а не одна ?
21 дек 09, 10:24    [8094098]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
gigadedushka
1. Переназначение таблицы:
у меня есть большой запрос, который состоит из нескольких таблиц, разных имен.
ХП обрабатывает таблицу с одним именем, заранее в ней определенным.
Придется, если не передавать параметр - имя таблицы,
переназначать эти несколько таблиц в одну с фиксированным именем, затем ее дропать и браться за следующую.
А что такое переназначение таблицы?
21 дек 09, 10:28    [8094112]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
gigadedushka
Member

Откуда:
Сообщений: 182
Потому что: на самом деле это одна таблица, у которой заданы три разных поля: ключи, по которым моя ХП будет группировать. Мне приходится из одной делать три временных, все эти поля обзывать одним именем и обрабатывать моей ХП, затем снова 3 результата приклеивать к исходной таблице
21 дек 09, 10:29    [8094120]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
gigadedushka
Member

Откуда:
Сообщений: 182
В общем случае, полей может быть несколько, вот я и хочу сделать более универсальным, передать имя таблицы, которая должна быть заранее создана с определенными полями
21 дек 09, 10:31    [8094126]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
CREATE TABLE #T
(
 d int
)
GO
CREATE PROCEDURE #PT 
 @TN sysname
AS
BEGIN

 DECLARE @s nvarchar(max)
 
 SET @s = N'INSERT ' + @TN+N'(d) values (5)'
 
 exec sp_executesql @s

END
GO

EXEC #PT @TN ='#T'

SELECT * FROM #T


но это говнокод страшный, что вы придумали.
21 дек 09, 11:15    [8094415]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
borin
Member

Откуда: angarsk/msk
Сообщений: 677
exec(@s), где @s - строка SQL-запроса, собранная с учетом переданных ХП параметров
короче, динамический запрос, как уже было сказано
21 дек 09, 11:27    [8094499]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с параметром - именем таблицы  [new]
gigadedushka
Member

Откуда:
Сообщений: 182
Спасибо, разобрался. Приходится делать так, так как задачи у нас уж очень страшные (((, которые другими способами не решить
21 дек 09, 12:15    [8094753]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить