Как найти параметры в sql-запросе с помощью C # Ado.Net

У меня есть этот запрос, который вводится пользователем во время выполнения.

SELECT * FROM Reports WHERE ReportDate > DATEADD(d, @Days, getdate()) AND ReportCode = cast(@Reportcode as int) 

Есть ли способ в C # .Net или SQL для получения имен параметров @Days и @ReportCode из этого SQL-запроса?

Регулярное выражение или сопоставление строк с использованием символа @ не является полным доказательством, так как имена параметров могут или не могут заканчиваться пробелом. За ними может сразу следовать запятая или скобка и т. Д., И само имя может содержать специальный символ.

Если я выполняю этот запрос без предоставления значений параметров, SQL- сервер выдает исключение. Должен объявить скалярную переменную «@Days» . Я могу поймать исключение и получить имя первого параметра, но тогда было бы очень сложно получить следующий параметр в запросе.

 exec sp_describe_undeclared_parameters N'SELECT * FROM Reports WHERE ReportDate > DATEADD(d, @Days, getdate()) AND ReportCode = cast(@Reportcode as int)' 

выходы:

 parameter_ordinal name suggested_system_type_id suggested_system_type_name ----------------- ------------- ------------------------ ---------------------------- 1 @Days 56 int 2 @Reportcode 56 int 

(пропущено больше столбцов)

Однако это функция SQL Server, а не ADO.NET.

Если я выполню этот запрос без предоставления значений параметров,

Ключевой трюк здесь предельно прост: поставьте правильные параметры

Примечание. Вы также можете использовать @params чтобы рассказать об этом, о которых вы уже знаете . Для получения дополнительной информации см. Документацию .

 create table login_db(UserName varchar(50),Password varchar(50)) go create proc sp_logininsertdb (@UserName varchar(50),@Password varchar(50)) as begin insert into login_db values(@UserName,@Password) end drop proc sp_logininsertdb exec sp_logininsertdb @UserName='admin',@Password='admin' go create proc sp_loginviewdb as select *from login_db exec sp_loginview_db create table addemployee_db(id int identity(1,1),employeename varchar(50),dob Date,location varchar(50),gender varchar(50),doj Date,experience int,ctc int,designation varchar(50),unithead varchar(50),projectid int) go create procedure sp_addemployeedb(@id int out,@employeename varchar(50),@dob Date,@location varchar(50),@gender varchar(50),@doj Date,@experience int,@ctc int,@designation varchar(50),@unithead varchar(50),@projectid int) as begin insert into addemployee_db values (@employeename,@dob,@location,@gender,@doj,@experience,@ctc,@designation,@unithead,@projectid) set @[email protected]@IDENTITY end declare @result int exec sp_addemployee @[email protected] output,@employeename='lokesh', @dob='03/16/1994',@location='tvm',@gender='male',@doj='01/18/2016', @experience=1,@ctc=4,@designation='ASE',@unithead='head1',@projectid='001' print @result go create proc sp_viewemployee_db as begin select * from addemployee_db end exec sp_viewemployee_db drop proc sp_updateemployee_db drop proc sp_editemployee_db go create procedure sp_editemployee_db(@id int,@employeename varchar(50),@dob Date,@location varchar(50),@gender varchar(50),@doj Date,@experience int,@ctc int,@designation varchar(50),@unithead varchar(50),@projectid int) as begin update addemployee_db set [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected] where [email protected] end exec sp_editemployee_db @id=10,@employeename='avaneesh', @dob='10/11/1992',@location='Trivandrum',@gender='male',@doj='01/18/2016', @experience=2,@ctc=7,@designation='ASET',@unithead='head2',@projectid='002' go create proc sp_updateemployee_db as begin select * from addemployee_db exec sp_updateemployee_db end drop proc sp_deletemployee_db go create proc sp_deletemployee_db (@id int out) as begin delete from addemployee_db where [email protected] end exec sp_deletemployee @id=12 go create proc sp_deleteemployee_db as begin select * from addemployee_db exec sp_deleteemployee_db end exec sp1_login_db create table databinding_db(location varchar(20)) go create proc sp_databindinginsertdb ( @location varchar(20) ) as begin insert into databinding_db values(@location) end drop table databinding_db drop proc sp_databindinginsertdb select * from databinding_db exec sp_databindinginsertdb 'chennai' exec sp_databindinginsertdb 'trivandrum' exec sp_databindinginsertdb 'puducherry' exec sp_databindinginsertdb 'trichy' select * from databinding_db go create proc sp_databindingdb as begin select * from databinding_db end 
  • Почему таймаут может произойти в SqlConnection.Open ()?
  • Ошибка .NET-SQL - разработка локального веб-приложения
  • вызов хранимой процедуры ничего не возвращает
  • Если добавить строку в строку подключения, генерируется исключение
  • как передать XML-тип данных в Datatable при вставке данных через SqlBulkCopy для SQL-сервера?
  • Как получить список параметров из хранимой процедуры в SQL Server
  • ADO.Net SQLCommand.ExecuteReader () замедляет работу или зависает
  • Использование SqlDataAdapter для вставки строки
  • Вызовите хранимую процедуру с параметром в c #
  • Как создать базу данных SQL Server во время установки
  • Получение SqlDataAdapter и SqlCommand путают
  • Interesting Posts

    Есть ли какое-либо программное обеспечение с открытым исходным кодом для преобразования операторов SQL в LINQ?

    как получить идентификатор строки, который только что добавлен

    Может ли столбец псевдонимов использоваться для просмотра в другом столбце?

    Вставка / удаление операций в Entity Framework C # с использованием табличной функции

    Удаление строк минимального ранга в SQL Server

    После удаления всех строк в базе данных первый первичный ключ – 1005

    выберите отчет о пунктуальности с помощью sql

    Вычисление различных тарифных периодов для вызова в SQL Server

    Получение ошибки XML при установке SQL Server 2012

    Триггер SQL Server при репликации

    Создайте представление с использованием SQL Server с повторяющимися строками и новым столбцом

    Как сделать запрос для получения определенных данных

    Создание 2 некластеризованных индексов с одинаковыми ключевыми столбцами, но с разными включенными столбцами

    Как удалить повторяющиеся записи в этом запросе T-SQL, содержащем LEFT OUTER JOIN

    Искать отношения родитель-ребенок до тех пор, пока родительский элемент не удовлетворяет условию

    Давайте будем гением компьютера.