求Oracle存储过程高手!一个简单的知识点的问题。非常感谢!!
发布网友
发布时间:2022-04-08 02:58
我来回答
共5个回答
懂视网
时间:2022-04-08 07:19
在Oracle数据库中并不能像sqlserver数据库那样创建完数据库就能创建表了,必须先创建该数据库的用户,也就是在Oracle数据库中不同的用户名会有不同的数据库,下来就是为要为用户名创建一个表空间,
具体步骤:
1.假如现在已经建好名为‘news‘的数据库,此时在F:oracleproduct10.1.0oradata目录下已经存在news目录(注意:我的Oracle10g安装在F:oracle下,若你的Oracle安装在别的目录,那么你新建的数据库目录就在*product10.1.0oradata目录下)。
2.在创建用户之前,先要创建表空间:
其格式为:格式: create tablespace 表空间名 datafile ‘数据文件名‘ size 表空间大小;
如:
SQL> create tablespace news_tablespace datafile ‘F:oracleproduct10.1.0oradata
ews
ews_data.dbf‘ size 500M;
其中‘news_tablespace‘是你自定义的表空间名称,可以任意取名;‘F:oracleproduct10.1.0oradata
ews
ews_data.dbf‘是数据文件的存放位置,‘news_data.dbf‘文件名也是任意取;‘size 500M‘是指定该数据文件的大小,也就是表空间的大小。
3.现在建好了名为‘news_tablespace‘的表空间,下面就可以创建用户了:
其格式为:格式: create user 用户名 identified by 密码 default tablespace 表空间表;
如:
SQL> create user news identified by news default tablespace news_tablespace;
默认表空间‘default tablespace‘使用上面创建的表空间。
4.接着授权给新建的用户:
SQL> grant connect,resource to news; --表示把 connect,resource权限授予news用户
SQL> grant dba to news; --表示把 dba权限授予给news用户
授权成功。
Oracle的知识点
标签:
热心网友
时间:2022-04-08 04:27
--比如函数gender(name varchar2)输入一个人名,会返回这个人的性别
create or replace procere test as
begin
v_gender varchar2(4);
v_gender := gender('William'); --这里就调用了这个函数,并把返回值赋予了变量v_gender
--过程的方法也是一模一样的。
end;
热心网友
时间:2022-04-08 05:45
--获取某部门的工资总和
CREATE OR REPLACE
FUNCTION get_salary(
Dept_no NUMBER,
Emp_count OUT NUMBER)
RETURN NUMBER
IS
V_sum NUMBER;
BEGIN
SELECT SUM(SALARY), count(*) INTO V_sum, emp_count
FROM EMPLOYEES WHERE DEPARTMENT_ID=dept_no;
RETURN v_sum;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
END get_salary;
调用:
DECLARE
V_num NUMBER;
V_sum NUMBER;
BEGIN
V_sum :=get_salary(10, v_num);
DBMS_OUTPUT.PUT_LINE('部门号为:10的工资总和:'||v_sum||',人数为:'||v_num);
END;
热心网友
时间:2022-04-08 07:20
存储过程可以使用函数的返回值。
赋值语句就是:=, 左边是变量名,右边是值,很简单。
热心网友
时间:2022-04-08 09:11
我也是初学者,不是什么高手,根据我的理解提出我的看法,仅供参考:
(1)函数function的参数必须都是in类型的,必须要有返回值
它可以被sql语句或者存储过程调用
例如:
--定义一个函数,返回传入的参数本身
create or replace function TestFunOne(argsOne in varchar2) return varchar2 is
resultStr varchar2(500);
begin
resultStr := argsOne;
return(resultStr);
end TestFunOne;
sql语句中可以这样用: update tableName t set t.columnName = TestFunOne('1')
存储过程中可以这样用:
create or replace procere getNameByFincode(inputStr in varchar2,
resultStr out varchar2) is
begin
resultStr := TestFunOne(inputStr);
end getNameByFincode;
(2)java程序中一般是直接执行sql语句或者调用存储过程
java执行sql语句可以这样:
String sql="update tableName t set t.columnName = TestFunOne('1')";
stmt.executeUpdate(sql);
java中调用存储过程可以这样:
CallableStatement callStmt = connection.prepareCall("call getNameByFincode(?,?)");
以上都是最简单的例子,具体展开网上也都可以查阅,希望能解决你的问题O(∩_∩)O~