[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача параметров в функцию
zvezda_t
Всем привет.

Написала функцию на запись данных в БД. Но мне не нравиться, что нужно указывать длину переменной.
Подскажите, пожалуйста, как можно передать значение процедуре не указывая длину?

public function insert_users()
{
$this->load->database();

$post = $this->input->post(NULL, TRUE);

$params = array();

foreach($post as $key=>$val)
{
$$key=$val;
$params[] = array ( 'name' => ":".$key,
'value' => &$$key,
'length' => 100,
'type' => SQLT_CHR);
}

$params[] = array ( 'name' => ":new_id",
'value' => &$new_id,
'length' => 1000000,
'type' => SQLT_CHR);

$this->db->stored_procedure("PAC_USERS", "ins_users", $params);
if(!$new_id) throw new Exception('No save');
}


сама процедура:

PROCEDURE ins_users(name IN VARCHAR2,   role IN INT, new_id OUT NUMBER)
AS
BEGIN

INSERT INTO EC2.TUSERS (id, name, role) VALUES(seq_users.nextval, name, role) RETURNING id INTO new_id;

END ins_users;




Спустя 14 минут, 57 секунд (30.08.2012 - 12:09) zvezda_t написал(а):
Если ставлю для входящих параметров 'length' => -1, то работает.
А если для исходящего параметра new_id, устанавливаю :

$params[] = array ( 'name'   => ":new_id",
'value' => &$new_id,
'length' => -1,
'type' => SQLT_CHR);


Сразу выходит ошибка((


Цитата
Ошибка БД

Error Number:

begin PAC_USERS.ins_users(:name,:role,:new_id); end;

Filename: C:\www\system\database\DB_driver.php

Line Number: 330

Спустя 18 часов, 47 минут, 37 секунд (31.08.2012 - 06:57) zvezda_t написал(а):
никто не знает???? sad.gif

Спустя 8 минут, 59 секунд (31.08.2012 - 07:06) zvezda_t написал(а):
Сама разобралась)
Оказывается нужно было сменить тип на OCI_B_INT:

$params[] = array ( 'name' => ":new_id",
'value' => &$new_id,
'length' => -1,
'type' => OCI_B_INT);

Спустя 2 часа, 55 минут, 17 секунд (31.08.2012 - 10:01) Игорь_Vasinsky написал(а):
Написала функцию на запись данных в БД. 


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


WTF?? Женская логика?

ну убери этот параметр.


_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.