CREATE OR REPLACE Procedure mytest(viewName Varchar2)
Is
V_i INTEGER;
v_sql VARCHAR2(200);
BEGIN
SELECT COUNT(*) INTO v_i
FROM sys.user_objects WHERE object_type= 'VIEW ' AND OBJECT_NAME= 'my_view ';
IF v_i =0 THEN
v_sql:= 'CREATE VIEW ' ¦ ¦viewName ¦ ¦ ' as (select * from my_table) ';
EXECUTE IMMEDIATE v_sql;
END IF;
END;
执行:
execute mytest( 'v_abc ');
如果出现问题:
ORA-01031: 权限不足
ORA-06512: ÔÚ"MYTEST", line 10
ORA-06512: ÔÚline 1
解决如下:
用SYS登陆,显式的给该用户授权,不论你是否已经将DBA授权给该用户。
GRANT CREATE ANY VIEW TO THE_USER;
如果是建表,或者建触发一样:
GRANT CREATE ANY TABLE TO THE_USER;
GRANT CREATE ANY TRIGGER TO THE_USER;
然后运行,就OK了。
SQL >PL/SQL procedure successfully completed.
分享到:
相关推荐
动态创建视图 在更复杂的场景下,我们可能需要动态地构建SQL语句来创建视图。例如: ```sql DECLARE v_sql VARCHAR2(5000); BEGIN v_sql := 'CREATE VIEW t_view AS ...'; EXECUTE IMMEDIATE v_sql; END; ``` ...
1. **性能优化**:因为存储过程在首次创建时会被编译,后续调用只需传递参数即可,减少了SQL解析的时间。 2. **代码重用**:存储过程可以封装复杂的业务逻辑,避免重复编写相同的SQL语句。 3. **安全性**:通过权限...
Oracle 数据库提供了一种称为“带参数视图”的特性,允许我们在创建视图时传递参数,从而使得视图能够根据这些参数的变化展示不同的数据。 #### 带参数视图的实现原理 实现带参数视图的基本思路是利用 PL/SQL 包...
1. **定义与创建**:存储过程可以通过`CREATE PROCEDURE`语句来创建,用户可以指定输入参数、输出参数或两者皆有,以满足不同的调用需求。例如: ```sql CREATE PROCEDURE myProcedure(IN inputParam INT, OUT ...
- 存储过程可以与视图一起使用,创建动态视图,提供更灵活的数据展示方式。 - 触发器可以与存储过程配合,实现数据修改时的自动响应。 12. **存储过程的版本控制**: - 在开发环境中,可以使用版本控制系统跟踪...
调用存储过程则使用`EXEC`或`EXECUTE`命令,传入参数进行执行。例如: ```sql CREATE PROCEDURE GetEmployeeById @EmployeeId INT AS BEGIN SELECT * FROM Employees WHERE EmployeeId = @EmployeeId END EXEC ...
1. **创建存储过程**:使用CREATE PROCEDURE语句创建存储过程,定义输入参数、输出参数或两者兼有,以及存储过程内的T-SQL代码。 2. **调用存储过程**:调用存储过程有两种方式,一种是使用EXEC或EXECUTE关键字,如...
使用`CREATE PROCEDURE`语句创建新的存储过程,定义参数、返回值和执行体。 3. **执行存储过程**: - `EXEC`关键字用于执行存储过程,如`EXEC myProcedure @param1, @param2`。 - 也可以使用`sp_executesql`动态...
10. **视图与存储过程的结合**:结合视图使用,可以创建更复杂的业务逻辑和查询接口。 通过"第十五节 sql Server 2005 存储过程.exe"这个视频教程,你可以深入理解上述知识点,并通过实际操作来巩固学习。学习过程...
这个存储过程将根据仓库代码和排序字符串,从视图v_ZY_zhibu_rpt中获取数据,并计算出相应的数据。 三、在UAP报表中调用存储过程 在UAP报表中,可以使用自定义报表来调用存储过程。在本例中,我们可以创建一个...
13. **视图与存储过程的结合**:存储过程可以与视图一起使用,创建复杂的业务逻辑视图,提供给用户更加友好的接口。 综上所述,“MySQL存储过程.pdf”这份文档可能会详细解释以上各个知识点,并通过实例展示如何在...
执行存储过程则使用`EXEC`或`EXECUTE`命令,可以传递参数。 5.2.1 中展示了创建不带参数和带输入参数的存储过程的例子。存储过程有助于提升性能,减少网络流量,提供安全机制,并简化数据库管理。 5.3 用户自定义...
1. **基本使用**:存储过程的基本语法、参数传递、返回值设定等,这些都是初学者首先要掌握的基础知识。 2. **输入与输出参数**:实例可能演示了如何通过输入参数接收外部数据,以及使用输出参数将处理结果传回调用...
存储过程可以与视图一起使用,创建动态视图,或者在视图上执行复杂的业务逻辑。 11. **存储过程的优化**: 通过合理使用临时表、优化查询语句、避免不必要的数据转换等方式,可以进一步提升存储过程的执行效率。 ...
在Oracle数据库中,虽然视图本身不直接支持像存储过程或函数那样定义输入参数,但我们可以通过巧妙的方法实现类似的效果。这里介绍了一种利用程序包(package)来创建带有参数的视图的方法。下面将详细讲解这个过程...
1. **动态创建节点**:在`FillTree`方法中,通过`TTreeNode`的`AddChild`方法创建新节点,并利用指针操作存储节点的附加数据。 2. **SQL查询的构建与执行**:通过`ADOQuery`对象执行SQL查询,灵活地根据程序运行时的...
1. **返回值**:存储过程不直接返回值,而是通过输出参数或影响数据来传递结果;而函数会有一个或多个返回值。 2. **执行方式**:存储过程需用EXEC语句调用,不能直接在表达式中使用;函数则可在表达式中直接使用。 ...
在给定的内容中,可以看到使用`EXECUTE`关键字来执行存储过程,并通过`VARIABLE`定义变量以及使用`PRINT`打印结果。 **示例**: ```sql VARIABLE ss NUMBER; EXECUTE c_n('1', :ss); PRINT ss; ``` 这里`VARIABLE`...