Arhlit - информационные технологии

ошибка в EXECUTE sp_executesql

когда я выполняю этот запрос, я получаю сообщение об ошибке «Неверный синтаксис рядом с ключевым словом «ВИД»». Пожалуйста, помогите мне, в чем проблема в этом запросе?

EXECUTE sp_executesql 
N'
CREATE VIEW LastDayOfMonth
AS
SELECT @MAX = MAX(DATEPART(DAY,CurrencyRateDate))AS CurrencyRateDate FROM Sales.CurrencyRate 
WHERE 
DATEPART(YEAR,CurrencyRateDate)=@YEAR
AND
DATEPART(MONTH,CurrencyRateDate)= @MONTH',
N' @YEAR CHAR(4),@MONTH CHAR(2)',
@YEAR = '2004',
@MONTH = '02';
26.11.2011

Ответы:


1

Нет очевидной причины делать то, что вы здесь делаете, либо с помощью представления, либо с помощью sp_executesql.

Следующее должно работать:

DECLARE @MAX INT
DECLARE @YEAR INT
DECLARE @MONTH INT

SET @YEAR = 2004
SET @MONTH = 02

SELECT @MAX = MAX(DATEPART(DAY,CurrencyRateDate))AS CurrencyRateDate FROM Sales.CurrencyRate 
WHERE 
DATEPART(YEAR,CurrencyRateDate)=@YEAR
AND
DATEPART(MONTH,CurrencyRateDate)= @MONTH

и показать результат:

SELECT @MAX

Если это не то, что вы пытаетесь сделать, возможно, вы могли бы отредактировать вопрос и уточнить?

26.11.2011
  • Что ж, я могу представить себе одну причину, по которой это можно сделать в хранимой процедуре, которая называется Reporting Services ;-). Однако это не объясняет использование представления. 26.11.2011
  • @vstrien - я понимаю, что вы имеете в виду, но зачем вам создавать представление в запросе SSRS - особенно такое простое, как это? 26.11.2011
  • Я согласен с вами в этом. Конечно, бесполезно создавать представления из отчета SSRS :). 26.11.2011

  • 2

    Я думаю, что проблема в использовании переменной @MAX, которая не объявлена. Если вы хотите вернуть это значение, вам не понадобится переменная, просто сделайте это так:

    EXECUTE sp_executesql 
    N'
    CREATE VIEW LastDayOfMonth
    AS
    SELECT 
       MAX(DATEPART(DAY,CurrencyRateDate))AS CurrencyRateDate AS Maximum
    FROM Sales.CurrencyRate 
    WHERE 
    DATEPART(YEAR,CurrencyRateDate)=@YEAR
    AND
    DATEPART(MONTH,CurrencyRateDate)= @MONTH',
    N' @YEAR CHAR(4),@MONTH CHAR(2)',
    @YEAR = '2004',
    @MONTH = '02';
    
    26.11.2011

    3

    Не могли бы вы попробовать это?:

    EXECUTE DATABASENAME..sp_executesql 
    N'
    CREATE VIEW LastDayOfMonth
    AS
    SELECT @MAX = MAX(DATEPART(DAY,CurrencyRateDate))AS CurrencyRateDate FROM Sales.CurrencyRate 
    WHERE 
    DATEPART(YEAR,CurrencyRateDate)=@YEAR
    AND
    DATEPART(MONTH,CurrencyRateDate)= @MONTH',
    N' @YEAR CHAR(4),@MONTH CHAR(2)',
    @YEAR = '2004',
    @MONTH = '02';
    

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

    26.11.2011

    4

    У меня была аналогичная проблема. Кажется, что вы не можете использовать параметры с представлением. Вместо этого обработайте SQL, чтобы включить параметры:

    set @sql = N'create view as select * from table where year = ' + cast(@year as varchar(4));
    EXECUTE sp_executesql @sql;
    
    04.12.2015
    Новые материалы

    12 сайтов с искусственным интеллектом, которые поразят вас
    Приготовьтесь поразить воображение Сегодня существует несколько веб-сайтов, использующих искусственный интеллект (ИИ). От индивидуальных рекомендаций по новостям до более умных поисковых..

    Скрытый технический долг в системах машинного обучения [NeurIPS 2015]
    Что такое технический долг? Технический долг — это метафора, введенная Уордом Каннингемом в 1992 году, чтобы объяснить долгосрочные затраты, связанные с быстрым продвижением в разработке..

    Алгоритм быстрой сортировки в Python
    Всем привет, добро пожаловать на programminginpython.com . Здесь я покажу вам, как реализовать алгоритм быстрой сортировки в Python. В предыдущих статьях я рассмотрел Сортировку вставкой ,..

    Как использовать манипулирование объектами в JavaScript
    Объекты являются важным строительным блоком JavaScript. Они позволяют группировать свойства и методы вместе. Объект представляет собой набор свойств. Свойства идентифицируются с..

    Разработка игр с помощью Godot Engine: мощный инструмент с открытым исходным кодом
    Разработка игр — творческий и сложный процесс, требующий множества навыков и инструментов. Одним из наиболее важных инструментов является игровой движок, который представляет собой программную..

    От XML к аннотациям: переход к современной конфигурации Spring
    Введение Фреймворк Spring претерпел значительную эволюцию с момента своего создания. Одним из заметных изменений стал переход от конфигураций на основе XML к конфигурациям, управляемым..

    Я люблю Руби!
    Я люблю Руби! Мне это нравится по той же причине, по которой мне нравится программировать на Python. Он настолько интуитивно понятен, а встроенные методы упрощают решение проблем. Если вы..