我正在使用Oracle 11g。我希望能够确定是否存在特定的序列。我已经尝试了下面的代码,但它不起作用。(当计数值应该更多时,它返回0作为计数值):
SELECT COUNT(*) FROM user_sequences WHERE sequence_name = 'SCHEMA.SEQUENCE_NAME';
如果有人知道这是为什么,请帮帮我。
gmol16391#
如果您以用户MP身份运行查询,则尝试如下所示:
MP
SELECT COUNT(*) FROM user_sequences WHERE sequence_name = 'SEQ_SSO_KEY_AUTHENTICATION';
否则,试着这样做:
SELECT COUNT(*) FROM all_sequences WHERE sequence_name = 'SEQ_SSO_KEY_AUTHENTICATION' AND sequence_owner = 'MP' ;
h5qlskok2#
此外,请记住,可能不会授予您查看数据库中的所有序列的权限。在这种情况下,上面提供的脚本可能不起作用,您应该运行如下内容
SELECT COUNT(*) FROM DBA_SEQUENCES;
但是,如果您没有访问DBA_SEQUENCES视图的权限,这也可能不起作用。
检查Oracle docs。
qxgroojn3#
对于较新的/11g版本,以下查询有效。其中一个建议是,我最初无法使用它,因为我使用的是序列名称的小写字母。使其全部封顶返回期望值
SELECT * FROM all_objects ao WHERE ao.owner = 'SCHEMA_NAME' AND ao.OBJECT_TYPE ='SEQUENCE' AND ao.OBJECT_NAME ='CAPITAL_SEQ_NAME';
3条答案
按热度按时间gmol16391#
如果您以用户
MP
身份运行查询,则尝试如下所示:否则,试着这样做:
h5qlskok2#
此外,请记住,可能不会授予您查看数据库中的所有序列的权限。在这种情况下,上面提供的脚本可能不起作用,您应该运行如下内容
但是,如果您没有访问DBA_SEQUENCES视图的权限,这也可能不起作用。
检查Oracle docs。
qxgroojn3#
对于较新的/11g版本,以下查询有效。其中一个建议是,我最初无法使用它,因为我使用的是序列名称的小写字母。使其全部封顶返回期望值