1

Я следовал этому уроку ЗДЕСЬ, но всякий раз, когда я пытаюсь обновить книгу, она выдает ошибку:

Источник данных.Ошибка: Microsoft SQL: эта функция базы данных не поддерживает опцию запроса «Запрос» со значением «ноль».

Это SQL, стоящий за запросом, и ничего не возвращает ноль, а сохраненный процесс настроен на прием 3 входных параметров.

CSR=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"CSR"],
d1=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"d1"],
d2=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"d2"],
Source = Sql.Database("ServerInstanceName", "Credentials", 
[Query="exec [dbo].[StoredProcToRun] '" & Number.ToText(d1)
& "''," & Number.ToText(d2) & "','" & CSR & "'"])

И это настройка моей хранимой процедуры, показывающая, что она принимает 3 параметра:

Alter PROCEDURE dbo.StoredProcToRun 
@d1 varchar(50), @d2 varchar(50), @CSR varchar(500)

AS
BEGIN

Что мне нужно изменить, чтобы этот мощный запрос передавал параметры Excel в мою хранимую процедуру SQL и возвращал данные обратно в книгу Excel?

Я изменил свой SQL-запрос мощности ниже, и теперь я получаю ошибку

Ожидается запятая

[Query="exec [dbo].[StoredProcToRun] 
& Number.ToText(d1) & "','"
& Number.ToText(d2) & "','" 
& CSR & "'"])

1 ответ1

0

убедитесь, что у вас есть строка при конкатенации ваших подстрок. Значения, которые являются числовыми (например, CSR), должны быть преобразованы в строку для объединения.

CSR=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"CSR"],
d1=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"d1"],
d2=Excel.CurrentWorkbook(){[Name="param"]}[Content]{0}[#"d2"],
Source = Sql.Database("ServerInstanceName", "Credentials", 
    [Query="exec [dbo].[StoredProcToRun] '" &
    Number.ToText(d1)  & "','" & 
    Number.ToText(d2)  & "','" & 
    Number.ToText(CSR) & "'"])

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

Только что попробовал с частью скрипта сгенерировать строку для оператора EXEC. В конце концов попробуйте сгенерировать строку и скопировать ее в Management Studio, чтобы проверить, работает ли она там.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .