Labview и SQL хранимая процедура - в процедуре или функции StoreTemp указано слишком много аргументов - PullRequest
1 голос
/ 16 апреля 2020

У меня есть хранимая процедура, похожая на эту:

CREATE PROCEDURE [dbo].[StoreTemp]
    (@Temperature float, 
     @Seconds int, 
     @SessionId int,)
AS
BEGIN
    DECLARE @Unit varchar(20);

    SELECT @Unit = RecordingUnit FROM ReadLastUnit;

    INSERT INTO DATASET (Temperature_C, Temperature_F, Seconds, SessionId, [Time])
    SELECT
        CASE WHEN @Unit = 'Celsius' THEN @Temperature ELSE NULL END,
        CASE WHEN @Unit != 'Celsius' THEN @Temperature ELSE NULL END,
        @Seconds, @SessionId, GETDATE();
END

В labview я подготавливаю строку с параметрами, такими как

execute StoreTemp %2.1f, %d, %d

, которая принимает 3 параметра, которые вводятся через «Формат» в строку "коробка.

Выдается следующая ошибка:

Произошла ошибка -2147217900 при возникновении исключительной ситуации в поставщике OLE DB Microsoft для ODB C Драйверы:
[Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] Процедура или функция StoreTemp имеет слишком много аргументов. в ADODBCommand

Вышеупомянутая SQL серверная хранимая процедура должна в основном получать одно значение измерения @Temperature из LabView и в зависимости от настроек записи (- которая читается как @Unit из ReadLastUnit View) либо сохраните температуру в одной единице, и заполните другую колонку единиц нулем, и наоборот. Каким-то образом кажется, что он получает больше параметров, хотя указано 3 входа и 3 параметра передаются через LabView. Что означает эта ошибка?

1 Ответ

0 голосов
/ 20 апреля 2020

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

Без дополнительной информации я могу только предположить, что число с плавающей запятой имеет запятую в качестве десятичной запятой , но это только предположение, основанное на доступной информации. Я бы ожидал, что вы будете знать об этом, если это так, но вы никогда не узнаете.

...