Как выполнить хранимую процедуру с параметрами?
У меня есть база данных с 40 таблицами. Я хочу выбрать данные из определенной таблицы с помощью одной хранимой процедуры. Первая таблица (TblSPAU1) имеет 6 столбцов, название: идентификатор, COL_SPAU1_EA, COL_SPAU1_EQ, COL_SPAU1_ore, COL_SPAU1_nivel, даты и времени. Четвертая таблица (TblSPAU4), например, имеет эти 6 столбцов: Идентификатор COL_SPAU4_EA, COL_SPAU4_EQ, COL_SPAU4_ore, COL_SPAU4_nivel, даты и времени. Поэтому я хочу выбрать данные из таблицы X от DateStart до DateStop.
Я хочу выбрать, скажем, столбец ID и fist из определенной таблицы. @val представляет номер таблицы, из которой я хочу выбрать данные. На sp_sqlexec у меня есть подсказка, которая говорит, что у меня указано слишком много аргументов. Когда я выполняю EXEC, он выдает мне эту ошибку: Msg 137, Уровень 15, состояние 2, строка 1. Необходимо объявить скалярную переменную "@sql" Мой вопрос заключается в том, как я должен выполнить эту хранимую процедуру? Заранее большое спасибо!
Что я уже пробовал:
USE [DBRapBreaza] GO /****** Object: StoredProcedure [dbo].[PS_SpauOPompa] Script Date: 12/19/2018 15:48:38 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[PS_SpauOPompa] @DataStart datetime, @DataStop datetime, @val int AS BEGIN SET NOCOUNT ON; declare @sql NVARCHAR(max) declare @col1 varchar set @col1='ID' declare @col2 varchar(25) set @col2='COL_SPAU'+CONVERT(VARCHAR, @val)+'_EA' declare @col3 varchar set @col3='DateTime' set @sql='select [ID]'+@col2+' FROM [DBRapBreaza].[dbo].[TblSPAU'+CONVERT(VARCHAR, @val)+ '] WHERE DateTime between'+CONVERT(VARCHAR(25), @DataStart,121)+ 'and'+CONVERT(VARCHAR(25), @DataStop,121)+';' END EXEC sp_sqlexec @sql, N'@DataStart datetime,@DataStop datetime,@val int', @DataStart, @DataStop, @val