Написала функцию на запись данных в БД. Но мне не нравиться, что нужно указывать длину переменной.
Подскажите, пожалуйста, как можно передать значение процедуре не указывая длину?
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, устанавливаю :
Сразу выходит ошибка((
А если для исходящего параметра 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](http://phpforum.su/html/emoticons/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);
Оказывается нужно было сменить тип на 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)