Смешанный тип таблицы с другими типами в качестве параметров для хранимых процедур c # - PullRequest
1 голос
/ 25 января 2010

Я спрашиваю о том, как я могу передать несколько параметров в хранимую процедуру, один из этих параметров - это пользовательская таблица. Когда я пытался сделать это, он показывает эту ошибку:

INSERT INTO BD (ID, ЗНАЧЕНИЕ, BID) значения ((ВЫБРАТЬ t1.ID, t1.Value ОТ @Table AS t1), someintvalue) здесь @Table - определяемый пользователем параметр таблицы.

Сообщение 116, уровень 16, состояние 1, процедура UpdateBD, строка 12 Только одно выражение может быть указано в списке выбора, если подзапрос не введен с EXISTS. Сообщение 109, уровень 15, состояние 1, процедура UpdateBD, строка 11 В операторе INSERT больше столбцов, чем значений, указанных в предложении VALUES. Количество значений в предложении VALUES должно соответствовать количеству столбцов, указанному в операторе INSERT.

Спасибо

1 Ответ

1 голос
/ 25 января 2010

Вам нужно передать имя таблицы как varchar, и ваш запрос также должен быть varchar. Это будет выглядеть так:

CREATE PROCEDURE MyStoredProc(
    @MyTableNameParameter varchar(50) = null
)
AS

DECLARE @Query nvarchar(MAX)

SET @Query = N'SELECT * FROM ' + @MyTableNameParameter + ' WHERE 1=1'

EXEC (@Query)

GO

Я бы не рекомендовал использовать эту технику, потому что она уязвима для SQL-инъекций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...