объявить переменные в sql ce - PullRequest
1 голос
/ 18 мая 2011

Я пытаюсь получить записи из таблицы в течение месяца в sql compact edition. Вот запрос sql, который я знаю:

DECLARE @startDate as DATETIME, @EndDate as DATETIME

@startDate = GetDate();
@ENdDate = DATEADD(m,1,@startDate)

select * from table where (columnname between @startdate and @enddate)

Я знаю, что вы должны отправлять по одному сценарию за раз, но как вы можете объявлять переменные в sql ce (я думаю, он не принимает объявлять)?

Ответы [ 4 ]

1 голос
/ 14 июля 2018

Я думаю, что мой ответ очень поздно для этого вопроса, но надеюсь, что он будет полезен для кого-то.
Вы не можете объявить некоторую переменную в SQL CE, потому что для каждой команды можно использовать только один оператор. Как сказал ErikEJ в этой ссылке .

Вы должны реорганизовать свой скрипт в одно большое утверждение, если это возможно!
Я буду очень рад услышать лучшее решение.

0 голосов
/ 18 мая 2011

Посмотрите на сообщение Как мне заполнить базу данных SQL Server Compact? и посмотрите, может ли инструмент, на который есть ссылка, вам помочь.

0 голосов
/ 19 мая 2011

Если вы звоните через приложение (я не уверен, как вы читаете данные)

Подготовьте ваш запрос так:

select * from table where (columnname between ? and ?)

но я не уверен, что вы можете использовать ключевое слово между. может быть, вам нужно изменить это.

тогда вам нужно добавить ваши объекты SqlCeParameter, как это:

cmd.Parameters.Add(new SqlCeParameter("p1", SqlDbType.DateTime, myDate));
0 голосов
/ 18 мая 2011

Я не знаком с SQL-CE, но думаю, что вам не хватает некоторых Set операторов. Попробуйте это :

DECLARE @startDate as DATETIME, @EndDate as DATETIME

Set @startDate = GetDate();
Set @ENdDate = DATEADD(m,1,@startDate)

select * from table where (columnname between @startdate and @enddate)

Обновление См. Использование параметров в запросах в справочнике SQL CE из MSDN. Вы правы в том, что Declare не является допустимым ключевым словом, поэтому вам потребуется запрос в виде параметризованной версии самого приложения.

select * from table where (columnname between ? and ?)

...