自己写的oracle dbms_sql 函数包例子
create or replace procedure pro_insert_dbms
is
cid number;
cid_DDL number;
selectsql varchar2(1000);
ddlsql varchar2(1000);
row_count number;
nofrows integer;
lrowid rowid;
ddlrows integer;
errpsn integer;
sqlfcd integer;
errc integer;
errm varchar2(2000);
request_id varchar2(100);
deal_name varchar2(100);
member_name varchar2(100);
/*(二)一般过程
对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤:
open cursor--->parse--->define column--->excute--->fetch rows--->close cursor;
而对于dml操作(insert,update)则需要进行以下几个步骤:
open cursor--->parse--->bind variable--->execute--->close cursor;
对于delete操作只需要进行以下几个步骤:
open cursor--->parse--->execute--->close cursor;
*/
begin
dbms_output.put_line('测试dbms_sql包.....');
delete_commit('delete from test_insert i where i.inner_id=2');
selectsql:='select i.request_id,i.deal_name,i.member_name from test_insert i';
begin
cid:=dbms_sql.open_cursor;
相关文档:
delete 删除一张大表时空间不释放,非常慢是因为占用大量的系统资源,支持回退操作,空间还被这张表占用着。
truncate table 表名 (删除表中记录时释放表空间)
DML 语句:
表级共享锁: 对于操作一张表中的不同记录时,互不影响
行级排它锁:对于一行记录,oracle 会只允许只有一个用户对它在同一时间进行修改操作 ......
EXEC sp_configure 'show advanced options', 1
declare @strdirname varchar(100)
declare @RemotePathstr varchar(100)
declare @LocalPathstr varchar(100)
declare @DBName char(50)
declare @sql varchar(100)
set @strdirname=replace(substring(convert(varchar(20),getdate(),120),1,10),'-','') --获得日期 ......
Sql Server2005的:
SELECT
TableName=CASE WHEN C.column_id=1 THEN O.name ELSE N'' END,
TableDesc=ISNULL(CASE WHEN C.column_id=1 THEN PTB.[value] END,N''),
Column_id=C.column_id,
ColumnName=C.name,
PrimaryKey=ISNULL(IDX.PrimaryKey,N''),
[IDENTITY]=CASE WHEN C.is_identity=1 THEN N'√' ......