JBOSS 点滴

丰丰的博客

#

Velocity语法(VM)

  Velocity语法(VM)  
 

1.     变量

(1) 变量的定义 :

#set($name = "hello")      说明:velocity中变量是弱类型的。

当使用#set 指令时,括在双引号中的字面字符串将解析和重新解释,如下所示:

#set($directoryRoot = "www" )

#set($templateName = "index.vm" )

#set($template = "$directoryRoot/$templateName" )

$template

输出将会是: www/index.vm

注: 在velocity中使用$2.5这样的货币标识是没有问题得的,因为velocity中的变量总是以一个大写或者小写的字母开始的。

(2) 变量规范的写法

${name} ,也可以写成:$name。提倡用前面的写法。

例如:你希望通过一个变量$vice 来动态的组织一个字符串。

 Jack is a $vicemaniac.

本来变量是 $vice现在却变成了$vicemaniac,这样Veloctiy就不知道您到底要什么了。所以,应该使用规范的格式书写 : Jack is a ${vice}maniac
现在Velocity知道变量是$vice而不是$vicemaniac。

注意:当引用属性的时候不能加{}

(3) 变量的赋值: 

$name="hello"

赋值的左边必须是一个变量或者是属性引用。右边可以是下面六种类型之一:

变量引用,字面字符串,属性引用,方法引用,字面数字,数组列表。

下面的例子演示了上述的每种类型:

#set( $monkey = $bill ) ## variable reference

#set( $monkey.Friend = "monica" ) ## string

#set( $monkey.Blame = $whitehouse.Leak ) ## property reference

#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference

#set( $monkey.Number = 123 ) ##number

#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList

注意: ①如果上述例子中的右值是null, 则左值不会被赋值,也就是说会保留以前的值。

②velocity模板中未被定义的变量将被认为是一个字符串。例如:

#set($foo = "gibbous")
$moon = $foo
输出结果为:
$moon = gibbous

③ velocity 模板中不会将 reference 解释为对象的实例变量。例如: $foo.Name 将被解释为 Foo 对象的 getName ()方法,而不是 Foo 对象的 Name 实例变量。例如:

$ foo.getBar()  等同于 $ foo.Bar ;

$ data.getUser("jon") 等同于 $ data.User("jon") ;

data.getRequest().getServerName() 等同于

$ data.Request.ServerName 等同于 $ {data.Request.ServerName}

 

2.     循环

#foreach ($element in $list)
     This is $element.
     $velocityCount
#end

例子:

#set( $list = ["pine", "oak", "maple"])

#foreach ( $ element in  $ list)

$velocityCount

This is  $ element.<br>
#end

输出的结果为:

1 This is pine.
2 This is oak.
3 This is maple.

每次循环 $list 中的一个值都会赋给 $element 变量。
$list 可以是一个 Vector、 Hashtable 或者 Array 。分配给 $element 的值是一个 java 对象,并且可以通过变量被引用。例如:如果 $element t 是一个 java 的 Product 类,并且这个产品的名字可以通过调用他的 getName() 方法得到。

#foreach ( $key in $list.keySet())
Key: $key -> Value: $list.get($key) <br>
#end

提示 :velocity中大小写敏感。

Velocity还特别提供了得到循环次数的方法,$velocityCount变量的名字是Velocity默认的名字。

 

例子:

First example:
  #foreach ( $foo in [1..5] )
    $foo
  #end

  Second example:
  #foreach ( $bar in [2..-2] )
    $bar
  #end

  Third example:
  #set ( $arr = [0..1] )
  #foreach ( $i in $arr )
    $i
  #end
上面三个例子的输出结果为:
  First example :
  1 2 3 4 5

  Second example :
  2 1 0 -1 -2

  Third example :
  0 1

 

3.     条件语句

#if (condition)

#elseif (condition)

#else

#end

4.     语句的嵌套

    #foreach ($element in $list)

       ## inner foreach 内循环

       #foreach ($element in $list)

       This is $element. $velocityCount < br > inner < br >

       #end

       ## inner foreach 内循环结束

    ## outer foreach

    This is $element.

    $velocityCount < br > outer < br >

    #end

语句中也可以嵌套其他的语句,如#if…#else…#end等。

5.       注释
(1)单行注释:
  ## This is a single line comment.
(2) 多行注释:
  #*
   Thus begins a multi-line comment. Online visitors won’t
   see this text because the Velocity Templating Engine will
  ignore it.
  *#
(3)文档格式:
  #**
   This is a VTL comment block and
   may be used to store such information
  as the document author and versioning
   information:
   @version 1.1

   @author  xiao
     *#

6.     关系和逻辑操作符

Velocity 也具有逻辑AND, OR 和 NOT 操作符。

## example for AND

#if($foo && $bar)

   <strong> This AND that</strong>

#end

例子中#if() 指令仅在$foo 和$bar 斗为真的时候才为真。如果$foo 为假,则表达式也为假;并且 $bar 将不被求值。如果 $foo 为真,Velocity 模板引擎将继续检查$bar的值,如果 $bar 为真,则整个表达式为真。并且输出This AND that 。如果 $bar 为假,将没有输出因为整个表达式为假。

7.Velocity 中的宏

Velocity中的 宏我们可以理解为函数。

①宏的定义

#macro(宏的名称 $参数1 $参数2 …)

   语句体(即函数体)

#end

②宏的调用

#宏的名称($参数1 $参数2 …)

    说明:参数之间用空格隔开。

8. #stop

   停止执行模板引擎并返回,把它应用于debug是很有帮助的。

9.#include 与#parse

#include和#parse的作用 都是 引入本地文件, 为了安全的原因,被引入的本地文件只能在TEMPLATE_ROOT目录下。

区别:

(1) 与#include不同的是,#parse只能指定单个对象。而#include可以有多个

如果您需要引入多个文件,可以用逗号分隔就行:
#include ( " one.gif " , " two.txt " , " three.htm " )
在括号内可以是文件名,但是更多的时候是使用变量的:
#include ( “greetings.txt”, $seasonalstock )

(2) #include被引入文件的内容将不会通过模板引擎解析;

而#parse 引入的文件内容 Velocity 将解析其中的 velocity 语法并移交给模板,意思就是说相当与把引入的文件 copy 到文件中。

#parse是可以递归调用的,例如:如果dofoo.vm包含如下行:

Count down.<br>

#set ($count = 8)

#parse ("parsefoo.vm")

<br>All done with dofoo.vm!

那么在parsefoo.vm模板中,你可以包含如下VTL:

$count

#set($count = $count - 1)

#if ( $count > 0 )<br>

#parse( "parsefoo.vm" )

#else

<br>All done with parsefoo.vm!

#end 的显示结果为:

Count down.

8

7

6

5

4

3

2

1

0

All done with parsefoo.vm!

All done with dofoo.vm!

注意:在 vm中使用#parse来嵌套另外一个vm时的变量共享问题。如:
->a.vm 里嵌套 b.vm;
->a.vm 里定义了变量 $param;
->b.vm 里可以直接使用$param,无任何限制。
但需要特别注意的是,如果b.vm里同时定义有变量$param,则b.vm里将使用b.vm里定义的值。

10.转义字符'\'的使用

如果reference被定义,两个’\’意味着输出一个’\’,如果未被定义,刚按原样输出。如:

#set($email = "foo" )

$email

\$email

\\$email

\\\$email

输出:

foo
$email
\foo
\$email

如果 $email 未定义

$email

\$email

\\$email

\\\$email

输出:

$email
\$email
\\$email
\\$email

 

11. 内置对象
Velocity内置了一些对象,在vm模版里可以直接调用,列举如下:
$request、$response、$session,另外,模板内还可以使用 $msg内的消息工具访问 Struts 的国际化资源,达到简便实现国际化的方法。

12. 数组访问

对数组的访问在Velocity 中存在问题,因为Velocity只能访问对象的方法,而数组又是一个特殊的Array,所以虽然数组可以进行循环列举,但却不能定位访问特定位置的元素,如 strs[2],数组对固定位置元素的访问调用了Array的反射方法get(Object array, int index),而Velocity没能提供这样的访问,所以数组要么改成List等其他类容器的方式来包装,要么就通过公用Util类的方式来提供,传入数组对象和要访问的位置参数,从而达到返回所需值的目的。

 

 

示例部分

1.Hello world的示例代码:

(1)Velocity模板 (hello.html)

<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE> New Document </TITLE>

</HEAD>

<BODY>

    hello,$name!                 (注意:这里的name与VelocityTest.java中的名称要一致)

</BODY>

</HTML>

(2)将velocity模板的内容转换的类(VelocityTest.java)

import java.io.File;

import java.io.FileOutputStream;

import java.io.PrintWriter;

import java.io.Writer;

import org.apache.velocity.Template;

import org.apache.velocity.VelocityContext;

import org.apache.velocity.app.Velocity;

import org.apache.velocity.app.VelocityEngine;

 

/**

 * Velocity转换

 * @author

 */

public class VelocityTest

{

    /**

     * 主函数

     * @param args

     */

    public static void main(String[] args)

 {

      //获取模板引擎

        VelocityEngine ve = new VelocityEngine();

        //模板文件所在的路径

        String path = "D:/java/jproject/regedit/webroot";      

        //设置参数

        ve.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);

//处理中文问题

        ve.setProperty(Velocity.INPUT_ENCODING,"GBK");

        ve.setProperty(Velocity.OUTPUT_ENCODING,"GBK");

        try

        {

            //初始化模板

            ve.init();

            //获取模板(hello.html)

Velocity 模板的名称
 
            Template template = ve.getTemplate("hello.html");   

            //获取上下文

            VelocityContext root = new VelocityContext();

            //把数据填入上下文

            root.put("name","world");                     (注意:与上面的对应)

//输出路径

            Strint outpath = "e:/helloworld.html";

            //输出

            Writer mywriter = new PrintWriter(new FileOutputStream(

                new File(outpath)));           

            template.merge(root, mywriter);

            mywriter.flush();          

        }

        catch (Exception e)

        {

            e.printStackTrace();

        }

    }

}

(3)环境的搭建

在lib目录内分别copy 进:velocity-1.4.jar,velocity-dept.jar;

下载地址:http://jakarta.apache.org/velocity/

(4)运行后的结果如下:

<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE> New Document </TITLE>

</HEAD>

<BODY>

hello,world!

</BODY>

</HTML>

 

2. Servlet和Velocity结合 示例

(1)example.html

  <html>
  <head><title>Velocity</title></head>
  <body bgcolor="#ffffff">
    <center>
    <h2>Welcom to Velocity!</h2>
    <i>Here's the list of people</i>
    <table cellspacing="0" cellpadding="5" width="20%" >
    <tr>
    <td bgcolor="#eeeeee" align="center">
    Names:
    </td>
    </tr>
    #foreach ($name in $theList)
    <tr>
    <td bgcolor="#eeeeee" align="center">$name</td>
    </tr>
    #end
    </table>
    </center>
  </body>
</html>

(2)servlet

package com.koal.velocity;

 

import java.io.IOException;

import java.io.FileNotFoundException;

import java.util.ArrayList;

import java.util.Properties;

import java.util.Vector;

import javax.servlet.ServletConfig;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.velocity.Template;

import org.apache.velocity.context.Context;

import org.apache.velocity.servlet.VelocityServlet;

import org.apache.velocity.app.Velocity;

import org.apache.velocity.exception.ResourceNotFoundException;

import org.apache.velocity.exception.ParseErrorException;

 

public class SampleServlet extends VelocityServlet 

{

    /**

     *   由VelocityServlet.init()调用,

     *   在此找出模版的路径

     */

    protected Properties loadConfiguration(ServletConfig config )

        throws IOException, FileNotFoundException {

        Properties p = new Properties();

        //取得路径

        String path = config.getServletContext().getRealPath("/");

        if (path == null)

        {

            System.out.println(" SampleServlet.loadConfiguration() : unable to "

                    + "get the current webapp root.  Using '/'. Please fix.");

            path = "/";

        }

        //设置路径

        p.setProperty( Velocity.FILE_RESOURCE_LOADER_PATH, path);

       

        return p;

    }

 

    /**

     *  Velocity主要的商业逻辑处理方法,由VelocityServlet自动调用

     *  @param ctx 模板上下文            

     *  @return Template 模板信息

     */  

    public Template handleRequest( HttpServletRequest request,

       HttpServletResponse response, Context ctx )

   {       

        //主要在此设置演示用的数据,开发中在此调用相应的业务处理流程,

 

        //并设置返回到页面的数据

        //待展示的列表数据
        String p1 = "第一位:LiuDong";
        String p2 = "第二位:Liang.xf";
        Vector personList = new Vector();
        //中文需要转换
        try {
            personList.addElement(new String(p1.getBytes(), "ISO-8859-1") );
            personList.addElement(new String(p2.getBytes(), "ISO-8859-1") );
        } catch (Exception e) {
            System.out.println("数据转换异常:"+e);   
        }
        //设置数据,供页面模版替换成显示的数据
        ctx.put("theList", personList );    

        //定义模板       

        Template outty = null;       

        try

        {

            //取模板

            outty =  getTemplate("example.html");           

        }

        catch( ParseErrorException pee )

        {

            System.out.println("SampleServlet: parse error for template " + pee);

        }

        catch( ResourceNotFoundException rnfe )

        {

            System.out.println("SampleServlet: template not found " + rnfe);

        }

        catch( Exception e )

        {

            System.out.println("Error " + e);

        }

       

        return outty;

}

 

(3)在web.xml中的配置:

<web-app>

<servlet> 

       <servlet-name>SampleServlet</servlet-name>

       <servlet-class>com.koal. velocity .SampleServlet</servlet-class>

</servlet>

    <servlet-mapping>

       <servlet-name>SampleServlet</servlet-name>

       <url-pattern>/SampleServlet</url-pattern>

</servlet-mapping>

</web-app>

 

(4)环境的搭建

在lib目录内分别 copy进:commons-collections.jar , velocity- 1.4.jar,velocity-dept.jar;
    Tomcat运行环境正常。
    启动Tomcat,在IE上输入: http://localhost:8080/example ,页面显示数据列表:

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mmm123lmj/archive/2009/11/19/4833620.aspx

posted @ 2010-11-16 16:43 半导体 阅读(11088) | 评论 (1)编辑 收藏

oracle语法

--增加字段
alter table table_name add (col1 type,col2 type);


ALTER TABLE TABLE_AAA ADD (STOCKMAN NUMBER(18))//添加一列

COMMENT ON COLUMN TABLE_AAA.STOCKMAN IS '管理人员' //给列添加注释
 
ALTER TABLE TABLE_AAA ADD CONSTRAINT FK_TABLE_AAA_R_TABLE_BBB_S FOREIGN KEY (STOCKMAN) REFERENCES TABLE_BBB (ID)//给列添加外键


--查看空间所有表
set pause on --分页

select * from all_tables where tablespace_name=''

--函数列表:
 row_number()  查看行号

--在oracle查询分析器中直接插入记录:

   select * from 表名 for update ;

posted @ 2010-11-03 10:11 半导体 阅读(174) | 评论 (0)编辑 收藏

WebService 客户端代码

     摘要: JDK1.4 --http 需要的包: 1、commons-httpclient-3.0.1.jar 2、commons-logging-1.1.jar 3、commons-codec-1.3.jar 程序: GetSample.java import java.io.*; import java.io.IOException; import&nbs...  阅读全文

posted @ 2010-10-21 09:00 半导体 阅读(948) | 评论 (0)编辑 收藏

sqlserver 将数据库所有表名小写字母转换成大写

1,启用对系统目录的特殊更新
    打开“企业管理器”->右击,选择“属性”->选择“服务器设置”标签->勾选"允许对系统目录直接进行修改”
2,运行命令
EXEC sp_configure 'allow updates'
 RECONFIGURE WITH OVERRIDE
go
UPDATE sysobjects SET name=upper(name) WHERE type='U'
go
EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE
go

posted @ 2010-10-12 09:43 半导体 阅读(1026) | 评论 (0)编辑 收藏

Eclipse,tomcat的JDK配置

                                     转自:http://blog.sina.com.cn/s/blog_5673f78b0100c9pu.html
最近在使用Eclipse时碰到一个问题,就是由于Eclipse和Tomcat使用的JDK不同,一般我们都会在机器上安装最新版本的JDK,由于Eclipse中也有JDK,但是版本往往都是旧版本的,当时在一个Web Project下编译运行代码,没有问题,后来在同一个Project下继续写了一个例子,但是由于这次写的例子中使用了泛型,但是对于泛型的支持还是在比较新版本的JDK可以编译过去,因此Eclipse自带的JDK是提示错误,所以通过配置Eclipse和Tomcat默认使用相同的JDK,再重新编译Project就没问题了.

1.Eclipse配置默认JDK

   通过Eclipse->Windows->Preference->Java->Installed JREs->add...将安装的新版JDK(D:\Program Files\Java\jdk1.6.0_07)指定为Eclipse的默认JDK,再通过Eclipse->Windows->Preference->Java->compiler中将compiler compliance level 设置为6.0,至此Eclipse的JDK配置完成.

2.在Eclipse中配置Tomcat服务器和Tomcat配置默认JDK

    目前我使用的是MyEclipse,所以配置默认Tomcat在Eclipse->Windows->Preference->MyEclipse Enterprise Workbench->Servers->Tomcat 6.x(目前安装的是6.x版本),将Tomcat Server设置为Enable,在tomcat home directory点击Browse..选择Tomcat安装目录,展开...->Servers->Tomcat 6.x,选中JDK,点击Tomcat JDK Home...后面Add...添加Tomcat使用的JDK,在JRE Name 中填写jdk1.6.0(名字根据自己的习惯来定义),点击Jre Home Directory后面Browse..选择新版的JDK目录(D:\Program Files\Java\jdk1.6.0_07),至此Tomcat配置默认JDK完成。

    配置Tomcat默认使用JDK的目录也可以通过,在TOMCAT_HOME\bin\下面修改catalina.bat和setclasspath.bat文件:

    1、修改tomcat/bin/catalina.bat,增加 set JAVA_HOME=XXXXXX,其中XXXXXX为jdk 的路径,如c:\j2sdk1_4

    2、修改tomcat/bin/setclasspath.bat,同样增加 set JAVA_HOME=XXXXXX

本人也由于JDK版本太多,所以这种办法是相当可行!

posted @ 2010-10-11 09:45 半导体 阅读(990) | 评论 (0)编辑 收藏

webservice错误集锦

在Eclipse中遇到The type XXX cannot be resolved. It is indirectly referenced from required .class files错误.....,查找的解决办法如下:

一:
It is indirectly referenced from required .class file

原因:你正要使用的类调用了另一个类,而这个类又调用了其他类,这种关系可能会有好多层。而在这个调用的过程中,某个类所在的包的缺失就会造成以上那个错误。

解决方法:导入缺失的包

二:
The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object. Fix the build path then try building this project
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files

出現以上訊息的原因是因為你裝了多個版本的jre或jdk的關係。本來Eclipse在建立專案時,會自動參照你的jre路徑,但多個版本就沒辦法了。
你只能手動建立…
1. 進入window\preferences\java\Installed JREs
1)按Add
2)輸入JRE Name, 例JDK1.5.0.03
3)JRE home directory, 選擇安裝的路徑
4)按OK
2. 進入Project\properties\Java Bulid Path
1)Add library
2)選JRE System Library後按Next
3)選workplace default JRE後按finish...

三,the type org.apache.axiom.soap.SOAPEnvelope cannot be resolved,it is indirectly referenced from required .class files
    当自动生成webservice程序时报的错误,最终解决办法为,把xis2_Codegen_Wizard_1.4.0\lib包全复制到build path下,问题全解决了.
问题:An error occurred while completing process,java.lang.reflect.InvocationTargetException
        当我用axis自动生成代码时,最后一步报的错,网上通常说的解决办法是

从AXIS2的LIB库中复制"geronimo-stax-api_1.0_spec-1.0.1.jar"和"backport-util-concurrent-3.1.jar"文件到Codegen的lib目录中,同时修改plugin.xml文件,添加

<library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar">
         <export name="*"/>
</library>
<library name="lib/backport-util-concurrent-3.1.jar">
        <export name="*"/>
</library>

到plugin.xml文件中,保存后重新启动Eclipse即可!


但本人用这种办法,怎么试也不行,本人用的JDK1.4,自动生成代码插件为:Axis2_Codegen_Wizard_1.3.0
所以怎么试也行不通,最后本来换了个.Axis2_Codegen_Wizard_1.4.0问题终于解决.也整了一天了!

axis所需要的包:
Axis2_Codegen_Service_1.4.0_plugins 代码自动生成   新建工程时,记得把该文件夹下lib\.jar包全部导入.

获取XML
JDOM1.0\build\jdom.jar   要加载到lib中
记住,当你用JDK1.4时,所有的包都要下载后坠为1.4的包,不然会出些稀奇古怪的错误.

webservice操作步骤:
1,把Axis2_Codegen_Service_1.4.0_plugins拷贝到plugin下.
2,打开eclipse,新建文件时选择axis.
3,选择JWDL地址.
4,生成代码,
5,调用:

     TaskServiceStub ts = new TaskServiceStub();
     TaskServiceStub.GetTaskList gt = new TaskServiceStub.GetTaskList();
     gt.setPassword(usercode);
     gt.setUsercode(password);
     String sxml = ts.GetTaskList(gt).getGetTaskListResult();
四,java.net.SocketException: Software caused connection abort: socket write error
     at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:126)
这个问题,我一直找不到答案,希望各位高手能告诉我.

posted @ 2010-09-30 17:01 半导体 阅读(460) | 评论 (0)编辑 收藏

SQL SERVER 企业管理器 MMC 无法创建管理单元

SQL SERVER 企业管理器 MMC 无法创建管理单元 收藏
本人系统2003 server,安装了SQL Server 2000 SP4,然后安装了Microsoft SQL Server 2005。後因系统太慢,卸载SQL SERVER2005,结果在打开 SQLServer2000的 企业管理器,收到以下错误信息:MMC创建无法管理单元。到网上寻找了以后,解决方法如下:

1. [开始]-->[运行] regedit   回车
2. 找到以下注册表子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup
3. 右键单击 ClientSetup 注册表子项, [新建]-->[字串值]。
4. 重命名注册表子项,创建 SqlPath , 然后按 Enter。
5. 双击, SqlPath 注册表子项, 然后键入“C:\Program Files\Microsoft SQL Server\80\Tools” 在数值数据框中。
6. 单击[确定],然后关闭注册表编辑器。
7.   [开始]-->[运行]   cmd,输入 regsvr32 "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmmc.dll"

posted @ 2010-09-29 22:49 半导体 阅读(1220) | 评论 (1)编辑 收藏

oracle,删除所有表

1、

select   'Drop   table   '||table_name||';'    
        from   all_tables  
        where   owner='要删除的用户名(注意要大写)';  

2、

删除所有表


以用户test为例

for example:

declare
cursor cur1 is select table_name from dba_tables where owner='TEST';
begin
  for cur2 in cur1 loop
    execute immediate 'drop table test.'||cur2.table_name;
  end loop;
end;

3、这个删除当前用户的所有对象(表、视图、触发器、存储过程、函数)

    没试过

DECLARE
TYPE name_list IS TABLE OF VARCHAR2(40);
TYPE type_list IS TABLE OF VARCHAR2(20);

Tab_name name_list:=name_list();
Tab_type type_list:=type_list();

sql_str VARCHAR2(500);
BEGIN
sql_str := 'select uo.object_name,uo.object_type from user_objects uo where uo.object_type not in(''INDEX'',''LOB'') order by uo.object_type desc';
EXECUTE IMMEDIATE sql_str BULK COLLECT INTO tab_name,tab_type;

FOR i IN Tab_name.FIRST.. Tab_name.LAST LOOP
sql_str := 'DROP ' || Tab_type(i) || ' ' || Tab_name(i);
EXECUTE IMMEDIATE sql_str;
END LOOP;
END;


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wengyupeng/archive/2008/08/07/2781748.aspx


以上方法本人试过,在sqlplus下最好用的删除,还原方法是:
把删除表,写成脚本:
  SET HEAD OFF

  SPOOL c:\drop_tables.sql

  select 'drop table '||table_name||';' from user_tables;

  spool off;

  @c:\drop_tables.sql;
  sql >@drop_tables.sql

然后再还原数据。
imp username/username@ORCL fromuser=username touser=username file=username.dmp  tablespaces=tablespaces


posted @ 2010-09-28 16:02 半导体 阅读(1644) | 评论 (1)编辑 收藏

解决oracle表被锁的问题

查看oracle数据库那些表被锁,用下面SQL

  select sess.sid,
         sess.serial#,
         lo.oracle_username,
         lo.os_user_name,
         ao.object_name,
         lo.locked_mode
   from  v$locked_object lo,dba_objects ao,v$session sess
  where  ao.object_id = lo.object_id
    and  lo.session_id = sess.sid;

杀掉锁表进程:
如有记录則表示有lock,記錄下SID和serial# ,將記錄的ID替換下面的738,1429,即可解除LOCK
alter system kill session '245,560';

posted @ 2010-09-28 14:28 半导体 阅读(355) | 评论 (0)编辑 收藏

webservice相关下载

http://blog.csdn.net/luo_yifan/archive/2010/07/08/5721783.aspx

posted @ 2010-09-27 22:11 半导体 阅读(225) | 评论 (0)编辑 收藏

仅列出标题
共27页: First 上一页 10 11 12 13 14 15 16 17 18 下一页 Last