Существует большая вероятность, что привилегии для выбора из таблицы1 были предоставлены роли, и роль была предоставлена вам. Привилегии, предоставленные роли, недоступны для PL / SQL, написанного пользователем, даже если пользователю была предоставлена роль.
Вы часто видите это для пользователей, которым предоставлена роль dba для объектов, принадлежащих sys. Пользователь с ролью dba сможет, скажем, SELECT * from V$SESSION
, но не сможет написать функцию, включающую SELECT * FROM V$SESSION
.
Исправление заключается в предоставлении явных разрешений на рассматриваемый объект непосредственно пользователю, например, в случае выше, пользователь SYS должен GRANT SELECT ON V_$SESSION TO MyUser;
Трудно улучшить документацию Python :
Ключи и значения перечислены в произвольном порядке, который не является случайным, зависит от реализаций Python и зависит от по истории вставок и удалений в словаре. Если
items ()
,keys ()
,values ()
,iteritems ()
,iterkeys ()
, иitervalues ()
вызываются без каких-либо изменений в словаре, списки будут напрямую соответствовать. Это позволяет создавать пары(значение, ключ)
с помощьюzip (): pair = zip (d.values (), d.keys ()).
Такое же соотношение имеет место для методовiterkeys ()
иitervalues ()
:пары = zip (d.itervalues (), d. iterkeys ())
предоставляет одно и то же значение для пар. Другой способ создать тот же список:pair = [(v, k) for (k, v) в d.iteritems ()]
Короче говоря, «да» с оговоркой, что вы не должны измените словарь между вызовом keys ()
и вызовом values ()
.
Да, они будут
Просто посмотрите документ в Python doc :
Перечислены ключи и значения в произвольном порядке, который не является случайным, зависит от реализаций Python и зависит от истории вставок и удалений словаря. Если items (), keys (), values (), iteritems (), iterkeys () и itervalues () вызываются без каких-либо промежуточных изменений в словаре, списки будут напрямую соответствовать.
Лучше всего по-прежнему использовать dict.items ()
Из документации Python 2.6:
Ключи и значения перечислены в произвольном порядке, который не является случайным, зависит от реализаций Python и зависит от истории вставок и удалений словаря. Если
items ()
,keys ()
,values ()
,iteritems ()
,iterkeys ()
, иitervalues ()
вызываются без каких-либо промежуточных изменений в словаре, списки будут напрямую соответствовать. Это позволяет создавать пары (значение, ключ) с помощьюzip (): pair = zip (d.values (), d.keys ())
. Такое же соотношение имеет место для методовiterkeys ()
иitervalues ()
:pair = zip (d.itervalues (), d.iterkeys ())
обеспечивает одинаковое значение для пар. Другой способ создать тот же список:pair = [(v, k) for (k, v) в d.iteritems ()]
.
Я более чем на 99% уверен, что то же самое будет верно для Python 3.0.