当前位置: 数据库>其它
本页文章导读:
▪存储过程的运用之print_table create or replace
procedure print_table
( p_query in varchar2,
p_date_fmt in varchar2 default 'dd-mon-yyyy hh24:mi:ss' )
-- .........
▪SQL Server 批处理语句 o批处理是从应用程序发送到SQLServer并得以执行的一条或多条T-SQL语句。使用批处理时,有下面一些注意事项。
o一个批处理中只要存在一处语法.........
▪windows下mysql忘记root密码解决方法 1、首先将mysqld服务停掉
2、在命令行中,cd 到mysql的bin目录下,然后执行如下命令
mysqld --skip-grant-tables
此时命令行会停止不动,然后你另起一个命令行
3、在新的命令行中输入:mysql
.........
[1]存储过程的运用之print_table
来源: 互联网 发布时间: 2013-11-07
create or replace procedure print_table ( p_query in varchar2, p_date_fmt in varchar2 default 'dd-mon-yyyy hh24:mi:ss' ) -- this utility is designed to be installed ONCE in a database and used -- by all. Also, it is nice to have roles enabled so that queries by -- DBA's that use a role to gain access to the DBA_* views still work -- that is the purpose of AUTHID CURRENT_USER AUTHID CURRENT_USER is l_theCursor integer default dbms_sql.open_cursor; l_columnValue varchar2(4000); l_status integer; l_descTbl dbms_sql.desc_tab; l_colCnt number; l_cs varchar2(255); l_date_fmt varchar2(255); -- small inline procedure to restore the sessions state -- we may have modified the cursor sharing and nls date format -- session variables, this just restores them procedure restore is begin if ( upper(l_cs) not in ( 'FORCE','SIMILAR' )) then execute immediate 'alter session set cursor_sharing=exact'; end if; if ( p_date_fmt is not null ) then execute immediate 'alter session set nls_date_format=''' || l_date_fmt || ''''; end if; dbms_sql.close_cursor(l_theCursor); end restore; begin -- I like to see the dates print out with times, by default, the -- format mask I use includes that. In order to be "friendly" -- we save the date current sessions date format and then use -- the one with the date and time. Passing in NULL will cause -- this routine just to use the current date format if ( p_date_fmt is not null ) then select sys_context( 'userenv', 'nls_date_format' ) into l_date_fmt from dual; execute immediate 'alter session set nls_date_format=''' || p_date_fmt || ''''; end if; -- to be bind variable friendly on this ad-hoc queries, we -- look to see if cursor sharing is already set to FORCE or -- similar, if not, set it so when we parse -- literals -- are replaced with binds if ( dbms_utility.get_parameter_value ( 'cursor_sharing', l_status, l_cs ) = 1 ) then if ( upper(l_cs) not in ('FORCE','SIMILAR')) then execute immediate 'alter session set cursor_sharing=force'; end if; end if; -- parse and describe the query sent to us. we need -- to know the number of columns and their names. dbms_sql.parse( l_theCursor, p_query, dbms_sql.native ); dbms_sql.describe_columns ( l_theCursor, l_colCnt, l_descTbl ); -- define all columns to be cast to varchar2's, we -- are just printing them out for i in 1 .. l_colCnt loop if ( l_descTbl(i).col_type not in ( 113 ) ) then dbms_sql.define_column (l_theCursor, i, l_columnValue, 4000); end if; end loop; -- execute the query, so we can fetch l_status := dbms_sql.execute(l_theCursor); -- loop and print out each column on a separate line -- bear in mind that dbms_output only prints 255 characters/line -- so we'll only see the first 200 characters by my design... while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop for i in 1 .. l_colCnt loop if ( l_descTbl(i).col_type not in ( 113 ) ) then dbms_sql.column_value ( l_theCursor, i, l_columnValue ); dbms_output.put_line ( rpad( l_descTbl(i).col_name, 30 ) || ': ' || substr( l_columnValue, 1, 200 ) ); end if; end loop; dbms_output.put_line( '-----------------' ); end loop; -- now, restore the session state, no matter what restore; exception when others then restore; raise; end;
SQL> set serverout on size 100000 SQL> select * from a; ID COL ------ ----- 1 AA 2 bb 3 cc SQL> exec print_table('select * from a'); ID : 1 COL : AA ----------------- ID : 2 COL : bb ----------------- ID : 3 COL : cc ----------------- PL/SQL procedure successfully completed
作者:linwaterbin 发表于2013-1-21 18:09:17 原文链接
阅读:0 评论:0 查看评论
[2]SQL Server 批处理语句
来源: 互联网 发布时间: 2013-11-07
o批处理是从应用程序发送到SQLServer并得以执行的一条或多条T-SQL语句。使用批处理时,有下面一些注意事项。
o一个批处理中只要存在一处语法错误,整个批处理都无法通过编译。
o批处理中可以包含多个存储过程,但除第一个过程外,其他存储过程前面都必须使用EXECTUE关键字。
o某些特殊的SQL指令不能和别的SQL语句共存在一个批处理中,如CREATETABLE和CREATEVIEW语句。这些语句只能独自存在于一个单独的存储过程中。
o所有的批处理使用GO作为结束的标志,当编译器读到GO的时候就把GO前面的所有语句当成一个批处理,然后打包成一个数据包发给服务器。
oGO本身不是T-SQL的组成部分,只是一个用于表示批处理结束的前端指令。
oCREATEDEFAULT、CREATEFUNCTION、CREATEPROCEDURE、CREATERULE、CREATESCHEMA、CREATETRIGGER和CREATEVIEW语句不能在批处理中与其他语句组合使用。批处理必须以CREATE语句开头,所有跟在该批处理后的其他语句将被解释为第一个CREATE语句定义的一部分。
o不能在删除一个对象之后,在同一批处理中再次引用这个对象。
o如果EXECUTE语句是批处理中的第一句,则不需要EXECUTE关键字。如果EXECUTE语句不是批处理中的第一条语句,则需要EXECUTE关键字。
o不能在定义一个CHECK约束之后,在同一个批处理中使用。
o不能在修改表的一个字段之后,立即在同一个批处理中引用这个字段。
o使用SET语句设置的某些选项值不能应用于同一个批处理中的查询。
作者:wltica 发表于2013-1-21 19:33:10 原文链接
阅读:0 评论:0 查看评论
[3]windows下mysql忘记root密码解决方法
来源: 互联网 发布时间: 2013-11-07
1、首先将mysqld服务停掉
2、在命令行中,cd 到mysql的bin目录下,然后执行如下命令
mysqld --skip-grant-tables
此时命令行会停止不动,然后你另起一个命令行
3、在新的命令行中输入:mysql
就可以进入mysql了,然后在在mysql的命令行中输入修改root密码的命令;如下
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
>exit
4、然后在重启mysql服务就可以了
不过这中间也可能有别的错误,如:
InnoDB: Operating system error number 5 in a file operation. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. It may also be you have created a subdirectory InnoDB: of the same name as a data file. InnoDB: File name .\ibdata1 InnoDB: File operation call: ‘open’. InnoDB: Cannot continue operation.
可能的原因是1、在移动那个\ibdata1文件时,将该文件损坏(将该文件修复一下)
2、给该问件加上了只读权限(去掉他的只读权限)
作者:ljasdf123 发表于2013-1-21 21:39:29 原文链接
阅读:0 评论:0 查看评论
最新技术文章: