Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/16: Рейтинг темы: голосов - 16, средняя оценка - 5.00
Дима Г
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 8
1

Процедура или функция "ИмяФункции" ожидает параметр "@Параметр", который не был указан

30.03.2014, 12:56. Просмотров 2953. Ответов 5
Метки нет (Все метки)

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

В SQL Server 2008 R2 создал скалярную функцию:
T-SQL
1
2
3
4
5
6
ALTER FUNCTION [Функция](@p nvarchar(5)) RETURNS int
BEGIN
     RETURN (SELECT КодИспытания
             FROM Испытания
             WHERE Пароль = @p)
END
В C# хочу использовать эту функцию.
C#
1
2
3
4
5
6
7
SqlConnection Соединение = new SqlConnection(СтрокаСоединения.ConnectionString);
SqlCommand Комманда = new SqlCommand("Функция", Соединение);
Комманда.Parameters.Add("@p", SqlDbType.NVarChar, 5).Value = ТекстПароль.Text;
 
Соединение.Open();
int Код = (int)Комманда.ExecuteScalar();
Соединение.Close();
В строке
C#
1
int КодИспытания = (int)Комманда.ExecuteScalar();
возникает ошибка:
"Процедура или функция "Функция" ожидает параметр "@p", который не был указан."
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 12:56
Ответы с готовыми решениями:

Параметризованный запрос ожидает параметр "@Ccal" который не был указан
При записи в ячейку "Ccal" - выходит ошибка, указанная в теме. Код был вот такой: ...

Подключение к Paradox через ODBC: "Источник данных не найден или не указан драйвер"
Почему я не могу подключиться к Paradox через ODBC? вот строка connectionstring...

"uch_pr_client.add_f" не содержит конструктор, который принимает аргументы "1"
нужно, чтобы первая форма вызывала форму add_f при нажатии на клавишу button2.. а тут ошибка.. и...

Как добавить параметр? Ошибка "Отсутствует сопоставление типа DataRowView с известным типом управляемого поставщика"
Здравствуйте, подскажите пожалуйста, как добавить параметр? При попытке добавления появляется...

Ребята, подскажите плз. - "WCF" + "plugin" (поддержка плагинов) + "3 Tier Architecture" (трехслойная архитектура)
Ребята, подскажите плз. можно ссылки на рабочий пример: C#: "WCF" + "plugin"(поддержка плагинов)...

5
Павлик Морозов
119 / 121 / 39
Регистрация: 26.10.2012
Сообщений: 410
Завершенные тесты: 1
30.03.2014, 18:21 2
Единственная мысль, приходящая в голову, глядя на ваш код, так это ошибочка в раскладке клавиатуры... Не называйте так переменные, дико смотрится....
0
Дима Г
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 8
30.03.2014, 20:54  [ТС] 3
Изменение раскладки не помогает. Код на русском не требуется комментариев. Среда позволяет, почему не пользоваться.
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
31.03.2014, 13:01 4
Дима Г, используйте запрос:
T-SQL
1
Select * from Функция(@p);
Добавлено через 1 минуту
то, что позволяет не значит что там нет косяков. студия писана америкосами - русские названия это надстройка над обычным функционалом.
1
Дима Г
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 8
05.04.2014, 20:28  [ТС] 5
У меня имя функции f001(@p)

Так не работает:
SQL
1
2
3
SELECT * FROM f001(@p)
SELECT * FROM dbo.f001(@p)
SELECT f001(@p)
а вот так работает:
SQL
1
SELECT dbo.f001(@p)
0
Петррр
6171 / 3472 / 898
Регистрация: 28.10.2010
Сообщений: 5,928
06.04.2014, 15:42 6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Data.SqlClient;
using System.Diagnostics;
 
namespace Ghost
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnectionStringBuilder stringBuilder = new SqlConnectionStringBuilder();
            stringBuilder.DataSource = "localhost";
            stringBuilder.InitialCatalog = "VetContext";
            stringBuilder.UserID = "sa";
            stringBuilder.Password = "1";
            using (SqlConnection connection = new SqlConnection())
            {
                connection.ConnectionString = stringBuilder.ConnectionString;
                using (SqlCommand command  = connection.CreateCommand())
                {
                    command.CommandText = "SELECT dbo.CoolFunction(@p);";
                    command.Parameters.Add("@p", System.Data.SqlDbType.NVarChar, 5).Value = "123";
                    connection.Open();
                    int obj = Convert.ToInt32(command.ExecuteScalar());
                    Debug.Assert(obj == 123 * 2);
                }
            }
        }
    }
}
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE FUNCTION dbo.CoolFunction
(
    @p nvarchar(5)
)
RETURNS int
AS
BEGIN
    
    return CAST(@p AS INT) * 2;
 
END
GO
0
06.04.2014, 15:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2014, 15:42

Как исправить ошибку ""Ссылки на тип "Component" требует его определения в "System", но его не удалось найти"?
using System; using System.Collections.Generic; using System.Data.OleDb; using System.Linq;...

Ошибка "Не удалось привести тип объекта "System.Data.DataRowView" к типу "System.IConvertible""
Здравствуйте,столкнулся с некой ошибкой.Привязал данные к comboBox пытаюсь выполнить процедуру...

Обновление данных и ошибка "Является "тип", но используется как "переменная"
Код кнопки обновить ,базу данных (button1) пишет ошибку Ошибка 1 "Склад_Фамилия.СкладDataSet"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru