测试目的: 测试存储过程的状态对该存储过程运行的影响。 环境准备: 1.创建测试表 test_drop_dep create table test_dep(name varchar2(20));insert into test_dep(name) values(ABC);commit; 2.建立依赖表 test_drop_dep的存储过程 create or replace proc
测试目的:
测试存储过程的状态对该存储过程运行的影响。
环境准备:
1.创建测试表 test_drop_dep
create table test_dep(name varchar2(20)); insert into test_dep(name) values('ABC'); commit;
2.建立依赖表 test_drop_dep的存储过程
create or replace procedure test_drop_dep
as v_count number; begin select count(*) into v_count from test_dep; dbms_output.put_line('BEFORE SLEEP TIME='||to_char(sysdate,'hh24:mi:ss')); dbms_lock.sleep(30); dbms_output.put_line('BEHIND SLEEP TIME='||to_char(sysdate,'hh24:mi:ss')); dbms_output.put_line('THE ROWCOUNT ='||to_char(v_count)); end; /
测试用例
测试用例1:
session1执行存储过程,session2删除表test_drop_dep,然后查询存储过程的状态。
session1执行存储过程
execute test_drop_dep;
session2删除表test_drop_dep,然后查询存储过程的状态
drop table test_dep; select object_name,status from dba_objects where object_name='TEST_DROP_DEP'; OBJECT_NAME STATUS ------------------------------ ------- TEST_DROP_DEP INVALID
测试用例1结论:
存储过程依赖的对象失效(删除)后,该存储过程会立即标记为失效invalid,即使该过程正在执行,已经运行的该存储过程会正常执行完毕。
测试用例2:
session1执行存储过程,session2删除表 test_drop_dep ,创建表test_drop_dep,执行存储过程。session1执行存储过程
execute test_drop_dep; /* SQL> execute test_drop_dep; BEFORE SLEEP TIME=10:06:47 BEHIND SLEEP TIME=10:07:17 THE ROWCOUNT =1 PL/SQL procedure successfully completed. */
session2删除表 test_drop_dep ,创建表test_drop_dep,执行存储过程
drop table test_dep; select object_name,status from dba_objects where object_name='TEST_DROP_DEP'; create table test_dep(name varchar2(20)); insert into test_dep(name) values('ABC'); commit; select object_name,status from dba_objects where object_name='TEST_DROP_DEP'; execute test_drop_dep; select object_name,status from dba_objects where object_name='TEST_DROP_DEP'; /* SQL> drop table test_dep; Table dropped. SQL> select object_name,status from dba_objects where object_name='TEST_DROP_DEP'; OBJECT_NAME STATUS ------------------------------ ------- TEST_DROP_DEP INVALID SQL> create table test_dep(name varchar2(20)); insert into test_dep(name) values('ABC'); Table created. SQL> commit; 1 row created. SQL> Commit complete. SQL> select object_name,status from dba_objects where object_name='TEST_DROP_DEP'; OBJECT_NAME STATUS ------------------------------ ------- TEST_DROP_DEP INVALID SQL> execute test_drop_dep; select object_name,status from dba_objects where object_name='TEST_DROP_DEP'; BEFORE SLEEP TIME=10:07:17 BEHIND SLEEP TIME=10:07:47 THE ROWCOUNT =1 PL/SQL procedure successfully completed. SQL> OBJECT_NAME STATUS ------------------------------ ------- TEST_DROP_DEP VALID */
测试用例2结论:
有效的存储过程执行后,会一直执行完毕,而不管当前是否是valid状态;
invalid的存储过程第一运行会执行编译,如果此时有未执行完成的该过程,编译一直处于library cache pin等待,直到所有过程都执行完才能编译执行。

掌握添加MySQL用户的方法对于数据库管理员和开发者至关重要,因为它确保数据库的安全性和访问控制。1)使用CREATEUSER命令创建新用户,2)通过GRANT命令分配权限,3)使用FLUSHPRIVILEGES确保权限生效,4)定期审计和清理用户账户以维护性能和安全。

chosecharforfixed-lengthdata,varcharforvariable-lengthdata,andtextforlargetextfield.1)chariseffity forconsistent-lengthdatalikecodes.2)varcharsuitsvariable-lengthdatalikenames,ballancingflexibilitibility andperformance.3)

在MySQL中处理字符串数据类型和索引的最佳实践包括:1)选择合适的字符串类型,如CHAR用于固定长度,VARCHAR用于可变长度,TEXT用于大文本;2)谨慎索引,避免过度索引,针对常用查询创建索引;3)使用前缀索引和全文索引优化长字符串搜索;4)定期监控和优化索引,保持索引小巧高效。通过这些方法,可以在读取和写入性能之间取得平衡,提升数据库效率。

ToaddauserremotelytoMySQL,followthesesteps:1)ConnecttoMySQLasroot,2)Createanewuserwithremoteaccess,3)Grantnecessaryprivileges,and4)Flushprivileges.BecautiousofsecurityrisksbylimitingprivilegesandaccesstospecificIPs,ensuringstrongpasswords,andmonitori

tostorestringsefliceflicyInmySql,ChooSetherightDataTypeBasedyOrneOrneEds:1)USEcharforFixed-LengthStstringStringStringSlikeCountryCodes.2)UseVarcharforvariable-lengtthslikenames.3)USETEXTCONTENT.3)

选择MySQL的BLOB和TEXT数据类型时,BLOB适合存储二进制数据,TEXT适合存储文本数据。1)BLOB适用于图片、音频等二进制数据,2)TEXT适用于文章、评论等文本数据,选择时需考虑数据性质和性能优化。

No,youshouldnotusetherootuserinMySQLforyourproduct.Instead,createspecificuserswithlimitedprivilegestoenhancesecurityandperformance:1)Createanewuserwithastrongpassword,2)Grantonlynecessarypermissionstothisuser,3)Regularlyreviewandupdateuserpermissions

mySqlStringDatatatPessHouldBechoseBeadeDataCharacteristicsAndUsecases:1)USECHARFORFIXED LENGTHSTRINGSTRINGSLIKECOUNTRYCODES.2)USEDES.2)usevarcharforvariable-lengtthstringstringstringstringstringstringstringslikenames.3)usebinaryorvarrinaryorvarinarydatalbonydatalgebgeenfopical.4)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Linux新版
SublimeText3 Linux最新版