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

Откуда: Archangelsk, Russia
Сообщений: 32
Всем доброго времени суток!

Занялся изучение MVC, создаю веб приложение. Из проекта подключаюсь в БД, использую хранимые процедуры. Передаю через параметры название таблицы, из которой нужно сделать выборку. Вопрос следующий: как переменную содержащую название этой таблицы объявить в ХП и сделать выборку? Буду благодарен за помощь!

p.s. Сижу с этим уже второй день, пол интернета облазил, но ничего не получается :(
24 июл 11, 23:58    [11020518]     Ответить | Цитировать Сообщить модератору
 Re: Объявление таблицы в хранимой процедуре  [new]
step_ks
Member

Откуда:
Сообщений: 936
JohnyMotorhead,
Топ 10, п.6
25 июл 11, 00:03    [11020529]     Ответить | Цитировать Сообщить модератору
 Re: Объявление таблицы в хранимой процедуре  [new]
step_ks
Member

Откуда:
Сообщений: 936
JohnyMotorhead
p.s. Сижу с этим уже второй день, пол интернета облазил, но ничего не получается :(
да ладно, вот, дав гуглу вашу же цитату
JohnyMotorhead
через параметры название таблицы
получаем первой же ссылкой решение. и даже с этого же форума.
25 июл 11, 00:14    [11020562]     Ответить | Цитировать Сообщить модератору
 Re: Объявление таблицы в хранимой процедуре  [new]
JohnyMotorhead
Member

Откуда: Archangelsk, Russia
Сообщений: 32
step_ks,

спасибо за ответ! но что то не работает

делаю вот так

ALTER PROCEDURE dbo.StoredProcedure2
AS
DECLARE @table_name varchar(50)

exec ('SELECT * FROM ' + @table_name)
return

cmd.Connection = con;
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.CommandText = "dbo.StoredProcedure2";

            cmd.Parameters.Clear();
            cmd.Parameters.Add(new SqlParameter("@TableName","Shops"));
            con.Open();
            reader = cmd.ExecuteReader();

и получаю ошибку при исполнении команды "Procedure StoredProcedure2 has no parameters and arguments were supplied."
подскажите пожалуйста что я делаю неправильно?
25 июл 11, 09:31    [11021055]     Ответить | Цитировать Сообщить модератору
 Re: Объявление таблицы в хранимой процедуре  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2845
ALTER PROCEDURE dbo.StoredProcedure2
(@table_name varchar(50))
AS BEGIN
     SET NOCOUNT ON;
     EXEC ('SELECT * FROM [' + @table_name + '];')
END
25 июл 11, 09:46    [11021094]     Ответить | Цитировать Сообщить модератору
 Re: Объявление таблицы в хранимой процедуре  [new]
JohnyMotorhead
Member

Откуда: Archangelsk, Russia
Сообщений: 32
Ребята, спасибо большое за помощь! Теперь все работает!
25 июл 11, 10:00    [11021147]     Ответить | Цитировать Сообщить модератору
 Re: Объявление таблицы в хранимой процедуре  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
studieren
ALTER PROCEDURE dbo.StoredProcedure2
(@table_name varchar(50))
AS BEGIN
     SET NOCOUNT ON;
     EXEC ('SELECT * FROM [' + @table_name + '];')
END
  • BEGIN ... END - лишние.
  • Для объектов есть специальный тип - sysname
  • Вместо '['+@table_name+']' лучше QUOTENAME(@table_name)
  • Динамический SQL требует явные права на @table_name (пока не применяется EXEC AS)
  • Можно было бы просто выполнять прямой SELECT вместо вызова процедуры - и без всякой динамики.
  • 25 июл 11, 10:02    [11021157]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить