动态创建视图

ladofwind 2005-01-11 09:56:53
oracle可以动态创建视图吗,我意思是条件的参数是我从程序传入的,
根据传入的值创建相应的视图,如果做呢?
...全文
315 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ORARichard 2005-01-11
  • 打赏
  • 举报
回复
一样可以啊,只是既然你在前台做了,就不用那么麻烦了

如果一定想用存储过程则通过你的参数a 构造view_str形成一条创建视图的语句就行了
ladofwind 2005-01-11
  • 打赏
  • 举报
回复
那存储过程中动态sql为什么不能用前台程序拼出的创建语句实现呢?
ladofwind 2005-01-11
  • 打赏
  • 举报
回复
照你上面的这么简单也可以,就不用存储过程了啊?
你的上上面的例子里面我没有看到 存储过程的参数 a在存储过程中出现啊?
ORARichard 2005-01-11
  • 打赏
  • 举报
回复
你用前台程序,直接构造就行了啊,不用存储过程的。存储过程只是为了在ORACLE中用动态SQL

你的程序如
a="one user"
cmd.commandtext="create or replace view as select * from users where username='"&a&"'"
cmd.Execute
ladofwind 2005-01-11
  • 打赏
  • 举报
回复
a在创建语句中怎么写啊? create or replace view as select * from users where username=&a
是这样?
ORARichard 2005-01-11
  • 打赏
  • 举报
回复
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.Parameter

Set Conn = New ADODB.Connection
Set Cmd = New ADODB.Command

Conn.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
ladofwind 2005-01-11
  • 打赏
  • 举报
回复
VB中如何调用这个创建呢?楼上的是个存储过程吧?
zealot_zk 2005-01-11
  • 打赏
  • 举报
回复
好象只能象楼上所说的那样,每次在创建视图前重新拼接创建视图的语句,如果是写好创建的语句其中某些值使用参数传递的话,是不行的,除非自己写一个动态创建视图的函数,把参数一起视图名称传入才可以。
ORARichard 2005-01-11
  • 打赏
  • 举报
回复
declare view_str varchar2(1000);
begin
view_str:='create or replace view as ...';
execute immediate view_str;
end;
ladofwind 2005-01-11
  • 打赏
  • 举报
回复
明白

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧