Оператор sql select с использованием FUNCTION без доступа к базе данных SQL в .Net - PullRequest
0 голосов
/ 18 ноября 2010

У меня есть база данных SQL, которая имеет только разрешения на чтение, так что я не могу добавить свой единственный сохраненный процесс или функции, и я ищу способ выполнить свою миссию без разрешения администратора (программное обеспечение имеет только права чтения для разработчикови не разрешает полный доступ, поэтому я ищу другой путь)

У меня есть таблица, из которой я хочу получить записи, но для этого необходимо выполнить некоторые вычисленияполя для определения длины.

Есть ли способ в .Net или с помощью файла сценария SQL, который я могу запустить, чтобы достичь этого?Не уверен, что мне нужно все продумать, чтобы получить требуемые результаты - создать временную таблицу - вставить в поля временной таблицы из таблицы И вычисленное значение - ГДЕ рассчитанное значение меньше 100

(теперь я могуделайте это, используя операторы CREATE, но это бесполезно, так как выше нет доступа к БД для создания чего-либо ... поэтому это должен быть некоторый тип динамического кода, который не может одновременно выполнять выбор и выполнять функции)Вот пример кода SQL, который я набираю, чтобы начать работать в .Net код

BEGIN
CREATE TABLE #Listings
(
AddressID varchar(50), Street varchar(50), City varchar(50), State varchar(50), 
    Zip varchar(50), ZipCalculatedValue Decimal(18,12)
)
INSERT INTO #Listings (AddressID, Street, City, State, Zip, ZipCalculatedValue)
SELECT AddressID, Street, City, State, Zip, Name, bo.CalcZip(@ZIP) AS ZipCalculatedValue
FROM tbl_Addresses
WHERE dbo.dbo.CalcZip(@ZIP) <= @maxZIP
ORDER BY Distance ASC

SELECT * 
FROM #Listings

, и функция выглядит как

  DECLARE @ZIP FLOAT

  SET @ZIPCalc = (@ZIP - 1000) --more code but removed to simplify

  SET @ZIPCalc = (@ZIPCalc * 10) --result above more workings removed

  RETURN @ZIPCalc

, поэтому в .Net я могу подключитьсяв БД и получить результаты, но есть идеи о том, как я могу использовать FUNCTION с оператором SELECT для получения результатов?

спасибо

1 Ответ

1 голос
/ 18 ноября 2010

Используйте Общее табличное выражение для вычисления значения.

WITH AddressWithCalc AS
(
    SELECT AddressID, Street, City, State, Zip,
        ((@ZIP - 1000) * 10) AS ZipCalculatedValue
    FROM dbo.tbl_Addresses
)
INSERT INTO #Listings (AddressID, Street, City, State, Zip, ZipCalculatedValue)
SELECT *
FROM AddressWithCalc
WHERE ZipCalculatedValue <= @maxZIP
ORDER BY Distance ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...