declare view_str varchar2(1000);
begin
view_str:='create or replace view as ...';
execute immediate view_str;
end;

解决方案 »

  1.   

    CREATE OR REPLACE  PROCEDURE P1 (a in varchar2) is
    view_str varchar2(1000);
    begin
    view_str:='create or replace view as ...';
    execute immediate view_str;
    end;
    在ORACLE中有一个如上的过程;Dim Conn As ADODB.Connection
    Dim Cmd As ADODB.Command
    Dim Param As ADODB.ParameterSet Conn = New ADODB.Connection
    Set Cmd = New ADODB.CommandConn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=****;Persist Security Info=True;User ID=username;Data Source=servicename"
    Conn.Open
    Cmd.ActiveConnection = Conn
    Cmd.CommandType = adCmdStoredProc
    Cmd.CommandText = "p1"
    Set Param = Cmd.CreateParameter("a", adChar, adParamInput)
    Param.Value = "自己写"
    Cmd.Parameters.Append Param
    Cmd.Execute
    Conn.Close
    Set Conn = Nothing
      

  2.   

    a在创建语句中怎么写啊?  create or replace view as select * from users where username=&a 
    是这样?
      

  3.   

    你用前台程序,直接构造就行了啊,不用存储过程的。存储过程只是为了在ORACLE中用动态SQL你的程序如
    a="one user"
    cmd.commandtext="create or replace view as select * from users where username='"&a&"'"
    cmd.Execute
      

  4.   

    那存储过程中动态sql为什么不能用前台程序拼出的创建语句实现呢?
      

  5.   

    一样可以啊,只是既然你在前台做了,就不用那么麻烦了如果一定想用存储过程则通过你的参数a 构造view_str形成一条创建视图的语句就行了