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

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

发布时间: 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-04-30 15:00:34 浏览:701
页面访问界面升级狼 发布:2025-04-30 14:58:21 浏览:470
ue4vs编译器无法自动打开 发布:2025-04-30 14:47:23 浏览:484
python数据科学手册 发布:2025-04-30 14:41:05 浏览:592
python调用cso 发布:2025-04-30 14:40:48 浏览:109
巧妙的算法 发布:2025-04-30 14:18:12 浏览:729
如何让服务器分配指定ip 发布:2025-04-30 14:13:04 浏览:14
汽车上的蓝牙密码是什么 发布:2025-04-30 14:09:19 浏览:76
阴阳师淘手游安卓官方是什么平台 发布:2025-04-30 14:08:20 浏览:40
哪里可以买密码盒子 发布:2025-04-30 13:52:18 浏览:603