powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка
6 сообщений из 6, страница 1 из 1
Ошибка
    #40026358
LiQuid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотел написать DynamicSQL, вот код:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE OR REPLACE PACKAGE BODY pkgDynamicSQL AS
    FUNCTION getClientMaxBuyProduct(g_member_id NUMBER) RETURN VARCHAR IS
    
    pname VARCHAR(50);
    dynamicsql VARCHAR2(500);
    
    BEGIN
        
        dynamicsql := 'SELECT productname FROM(SELECT p.productname FROM cart c
            INNER JOIN Member m ON c.member_id = m.member_id
            INNER JOIN Product p ON c.product_id = p.product_id
            AND c.quantity = (SELECT MAX(quantity) FROM cart WHERE member_id =  :member_id)
            AND m.member_id = :member_id
            GROUP BY p.productname, c.quantity)
            WHERE ROWNUM = 1';
            EXECUTE IMMEDIATE dynamicsql INTO pname USING g_member_id;
    RETURN pname;
    END;
    
END pkgDynamicSQL;



Вызываю функцию:

Код: plsql
1.
2.
3.
4.
5.
6.
declare 
a varchar(50);
begin
    a := pkgDynamicSQL.getClientMaxBuyProduct(5);
    dbms_output.put_line(a);
end;


При вызове функции пишет:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Error starting at line : 26 in command -
declare 
a varchar(50);
begin
    a := pkgDynamicSQL.getClientMaxBuyProduct(5);
    dbms_output.put_line(a);
end;
Error report -
ORA-01008: не все переменные привязаны
ORA-06512: на  "STORE.PKGDYNAMICSQL", line 16
ORA-06512: на  line 4
01008. 00000 -  "not all variables bound"


Не могу найти ошибку.
Подскажите пожалуйста.
...
Рейтинг: 0 / 0
Ошибка
    #40026366
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiQuid,

С точки зрения execute immediate у вас два бинда, то что они в тексте названы одинаково - не его проблема. Передавайте значение для всех.
...
Рейтинг: 0 / 0
Ошибка
    #40026367
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ошибка
    #40026381
LiQuid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оу супер, спасибо большое env!!!
...
Рейтинг: 0 / 0
Ошибка
    #40026385
LiQuid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И за ссылку спасибо Вячеслав.
...
Рейтинг: 0 / 0
Ошибка
    #40026394
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос в общем случае будет выдавать недетерминированные данные
или он написан непрозрачно
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT productname
   FROM(
    SELECT p.productname
       FROM cart c
            INNER JOIN Member m ON c.member_id = m.member_id
            INNER JOIN Product p ON c.product_id = p.product_id
            AND c.quantity = (SELECT MAX(quantity) FROM cart WHERE member_id =  :member_id)
            AND m.member_id = :member_id
      GROUP BY p.productname, c.quantity
 )
 WHERE ROWNUM = 1
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]