Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
3 / 3 / 2
Регистрация: 27.09.2009
Сообщений: 200

Как передать параметры в процедуру

18.06.2012, 20:13. Показов 2228. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
БД oracle имеется вот такая процедура
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE OR REPLACE PROCEDURE addchecks (colpar NUMBER,fupar VARCHAR,quantpar NUMBER,salepar DATE,bonpar NUMBER)
AS
colnumber NUMBER;
BEGIN
SELECT 
  id INTO colnumber
FROM 
  (SELECT
     fuel_column.id,
     column_number,
     fuel
   FROM
     fuel_column,
     fuel
   WHERE
     id_fuel=fuel.id) mycolumn 
WHERE
  mycolumn.column_number=colpar AND
  mycolumn.fuel=fupar;
IF (colnumber IS NOT NULL)
  THEN INSERT INTO checks VALUES (NULL,colnumber,quantpar,salepar,bonpar);
END IF;
END;
Так вот вопрос как ее вызвать в программе и передать ей входные параметры?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.06.2012, 20:13
Ответы с готовыми решениями:

Как передать параметры в BackgroundWorker
Здравствуйте. В общем надо чтобы при нажатии на кнопку выполнялась операция, но т.к. она длительная, то окно виснет до тех пор пока...

Как передать параметры неуправляемому коду
Здравствуйте.У меня такая проблема,нужно дотянуться до сторонней программы (chdbfl.exe поставляется вместе с 1с , предназначена для...

Как передать Hashtable через процедуру
Здравствуйте. Мне нужно в процедуре обрабатывать данные и записывать их в hashtable, чтобы в дальнейшем их использовать. я пытался...

8
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,246
18.06.2012, 21:27
по-моему там обычным select'om, типа такого:
C#
1
2
классДляКоммандОракл command=new ....("select*from addchecks);
command.Parameters.Add(..);//и тут параметры, что в скобках у процедуры
1
3 / 3 / 2
Регистрация: 27.09.2009
Сообщений: 200
18.06.2012, 22:04  [ТС]
хм, спасибо, попробую, я правда уже додумался вот до чего
C#
1
ChangeChecks.CommandText = "begin addchecks(" + checkcolumn + ",'" + checkfuel + "'," + checkquantity + ",'" + checkdatasale + "'," + checkbonus + "); end;";
правда возникает ошибка что неправильное представление времени, то бишь нельзя оракловскому объекту date передать значение типа 'день.месяц.год минута.секунда' можно ли как нибудь решить сию проблему не разбивая в таблице дату на собственно дату и время?
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,246
18.06.2012, 22:18
там у Datetime есть метод ToShortDateString(). Может им воспользоваться?
0
3 / 3 / 2
Регистрация: 27.09.2009
Сообщений: 200
18.06.2012, 22:38  [ТС]
нет не подходит

Добавлено через 4 минуты
Все, нашел решение, оказывается в процедуру надо передавать дату так
to_date('1998/05/31:12:00:00AM', 'yyyy/mm/dd:hh:mi:ssam')
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
19.06.2012, 07:38
Параметры надо передавать в виде параметров, а не с помощью конкатенации строк.
Например вот, для даты:
C#
1
2
3
4
5
ChangeChecks.CommandText = "begin addchecks(" + checkcolumn + ",'" + checkfuel + "'," + checkquantity + ",:salepar," + checkbonus + "); end;";
var saleparParameter = ChangeChecks.CreateParameter();
saleparParameter.Value = checkdatasale;
saleparParameter.ParameterName = "salepar";
ChangeChecks.Prameters.Add(saleparParameter);
Предполагается, что переменная checkdatasale имеет тип DateTime.
0
3 / 3 / 2
Регистрация: 27.09.2009
Сообщений: 200
19.06.2012, 12:12  [ТС]
А в чем смысл, если результат один и тот же, а кода больше ?

Добавлено через 1 минуту
Тогда уж надо и процедуру получается переписывать )
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
19.06.2012, 12:31
Смысл в меньшем количестве проблем.
Например что если в переменной checkfuel, случайно, окажется строка типа такой:
Code
1
',null,null,null,null); execute immediate 'drop table fuel'; addchecks(null,'
Представляете последствия?
В случае с параметрами, почти никаких последствий не будет, разве что процедура ничего не сделает.

Еще одно преимущество в том, что сервер Oracle не будет каждый делать Hard parse строки. Так как она будет всегда одинаковая, а только лишь будут меняться значения параметров.
После первого вызова он положит её в кэш и потом уже брать оттуда.
1
3 / 3 / 2
Регистрация: 27.09.2009
Сообщений: 200
19.06.2012, 14:11  [ТС]
Хм, спасибо, но так то я проверяю все переменные на соответствие прежде чем передать их в процедуру, так что думаю ничего страшного произойти не должно, а вот насчет быстродействия вы пожалуй правы.
Кстати вот еще один вопрос. Не по данной теме но все таки. Как сделать так чтобы в ячейке датагридвью дата отображалась полностью, то бишь с секундами, а то почему то дату показывает нормально dd.mm.yyyy а время выдает в формате hh.mm,почему секунды не показывает ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2012, 14:11
Помогаю со студенческими работами здесь

Как передать параметр в хранимую процедуру с типом nvarchar
Добрый день! Есть хранимая процедура ALTER PROCEDURE . @name_sotr nvarchar(50) AS BEGIN select id from sotrudniki where...

Как передать в процедуру Oracle параметр типа table%rowtype из ADO.NET?
Привет, что-то затруднился. Возможен ли вызов оракловой процедуры через ADP.NET у которой входой параметр имеет тип коллекции...

Передать параметры программе
Есть программа, загружающая на сайт изображения, она добавляет в контекстное меню windows пункт "Загрузить на ...", этот пункт...

Не получается передать параметры в поток
Всем привет. Собственно вопрос, где ошибка, почему не получается сделать так (передать параметр в поток): public class Form { ...

Передать параметры во вложенный запрос
SELECT result.benennung, result.maschine_name, result.nummer, result.benennung_ru, result.arbeiter, SUM(result.anzahl_io),...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru