当前位置:首页 » 存储配置 » 目标机器存储过程创建失败

目标机器存储过程创建失败

发布时间: 2023-06-05 16:46:05

A. mysql创建存储过程,为什么行不通

可能是少一个空格的问题


也就是那个 DELIMITER //

在 DELIMITER与 // 之间, 有一个空格.


DELIMITER//
CREATEPROCEDUREHelloWorld()
BEGIN
SELECT'HelloWorld';
END//

DELIMITER;

callHelloWorld();

+-------------+
|HelloWorld|
+-------------+
|HelloWorld|
+-------------+
1rowinset(0.00sec)

QueryOK,0rowsaffected(0.00sec)注:如果HelloWorld都失败,那么首先需要检查数据库的存储引擎

mysql>showvariableslike'%storage_engine%';
+----------------+--------+
|Variable_name|Value|
+----------------+--------+
|storage_engine|MyISAM|
+----------------+--------+
1rowinset(0.00sec)

存储引擎为InnoDB的数据库,能使用存储过程。

mysql>showvariableslike'%storage_engine%';
+----------------+--------+
|Variable_name|Value|
+----------------+--------+
|storage_engine|InnoDB|
+----------------+--------+
1rowinset(0.01sec)

B. db2创建存储过程报错

首先第一个错误,分号,应该是英文分号; 而不是中文;

C. 创建存储过程报错如下: 警告: 创建的过程带有编译错误。

1. 创建完存储过程(在命令行),可以用showerr看具体错误
2. 可以在PLSQL中,输入"全班排名", 然后俺右键->编辑,看到具体错误
3. 你的sql从from后一直到group by的分号;是多余的,即便单独在SQL窗口也会报错
SQL应该改成
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分

from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
4. 存储过程不能直接用SQL,要用游标或select……into方式
比如:
create or replace procere 全班排名(
class in char(8)
)
as
cursor cur(p_class char(8)) is
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分

from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
rs cur%rowtype;
begin
for rs in cur(class) loop
dbms_output.put_line(rs.学号||','||rs.姓名||','||rs.平均分||','||rs.总分);
end loop;
end;

D. 调用存储过程失败

SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.selectCommand = new SqlCommand();
da.selectCommand.Connection = conn;
da.selectCommand.CommandText = "NameOfProcere";
da.selectCommand.CommandType = CommandType.StoredProcere;
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.selectCommand.Parameters.Add(param);

热点内容
开源库编译管理员 发布:2025-02-06 09:39:14 浏览:914
脸书怎么注册安卓 发布:2025-02-06 09:36:47 浏览:381
车用安卓导航无线打不开什么原因 发布:2025-02-06 09:27:50 浏览:790
安卓与苹果如何互相传送文件 发布:2025-02-06 09:27:40 浏览:26
华为服务器盘符如何分配 发布:2025-02-06 09:26:41 浏览:560
传奇h5源码下载 发布:2025-02-06 09:26:06 浏览:78
编译uclibc 发布:2025-02-06 09:09:04 浏览:152
用gcc编译16位汇编 发布:2025-02-06 09:06:07 浏览:823
什么低端安卓手机不卡 发布:2025-02-06 09:03:32 浏览:14
我的世界服务器卡领地 发布:2025-02-06 08:50:45 浏览:256