mysql存储过程打印输出
① mysql中如何在控制台打印信息.就如sqlserver里的print那样
1、只能用 SELECT.就像下面这个 Hello World 一样,mysql> DELIMITER //,mysql> CREATE PROCEDURE HelloWorld,BEGIN,SELECT 'Hello World',END/,Query OK, 0 rows affected (0.00 sec),mysql> call HelloWorld,Hello World ,row in set 0.00 sec,Query OK, 0 rows affected只有SELECT了。
2、mysql没有sqlserver里面控制台的概念,因为mysql全部都是控制台
② 在MySQL中如何创建一个带输出参数为一个表类型的存储过程
在MySQL中如何创建一个带输出参数为一个表类型的存储过程
首先需要知道“另一个存储过程”的结果集的所有列的类型。
假设“另一个存储过程”的名字是sp1,没有参数,返回的结果集共3列,全部为int型,那么“存储过程”里添加一个与结果集列数相同的临时表或表变量用于接收“另一个存储过程”的结果集
如下
CREATE
PROCEDURE
sp2
AS
DECLARE
@t
table(a
int,b
int,c
int)
INSERT
INTO
@t(a,b,c)
EXEC
sp1
SELECT
*
FROM
@t
使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用。
创建存储过程
和数据表一样,在使用之前需要创建存储过程,它的简明语法是:
引用:
Create
PROC
存储过程名称
[参数列表(多个以“,”分隔)]
AS
SQL
语句
例:
引用:
Create
PROC
upGetUserName
@intUserId
INT,
@ostrUserName
NVARCHAR(20)
OUTPUT
--
要输出的参数
AS
BEGIN
--
将uName的值赋给
@ostrUserName
变量,即要输出的参数
Select
@ostrUserName=uName
FROM
uUser
Where
uId=@intUserId
END
其中
Create
PROC
语句(完整语句为Create
PROCEDURE)的意思就是告诉SQL
SERVER,现在需要建立一个存储过程,upGetUserName
就是存储过程名称,@intUserId
和
@ostrUserName
分别是该存储过程的两个参数,注意,在SQL
SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。只要将以上代码在“查询分析器”里执行一次,SQL
SERVER就会在当前数据库中创建一个名为“upGetUserName”的存储过程。你可以打开“企业管理器”,选择当前操作的数据库,然后在左边的树型列表中选择“存储过程”,此时就可以在右边的列表中看到你刚刚创建的存储过程了(如果没有,刷新一下即可)。
二、存储过程的调用
之前已经创建了一个名为“upGetUserName”的存储过程,从字面理解该存储过程的功能是用来取得某一个用户的名称。存储过程建立好了,接下来就是要在应用程序里调用了,下面看一下在ASP程序里的调用。
③ C#中怎样调用mySql的存储过程并取得输出参数
string MyConString = "..."
OdbcConnection conn = new OdbcConnection(MyConString);
conn.Open();
OdbcCommand cmd = new OdbcCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcere;
cmd.CommandText = "p_test";
OdbcParameter p1 = new OdbcParameter("t_count", OdbcType.Int);
p1.Direction = ParameterDirection.Output;
cmd.Parameters.Add(p1);
int i = cmd.ExecuteNonQuery();
TextBox1.Text = p1.Value.ToString();
conn.Close();
④ 在mysql中如何导出指定的存储过程
方法一:从mysql维护的存储过程表(mysql.proc)出:
select body
from mysql.proc
where name = 'simpleproc'
;
更详细一点的:
select name , type , param_list ,returns , body , body_utf8
from mysql.proc
where name = 'simpleproc'
;
方法2:
select ROUTINE_DEFINITION , ROUTINE_TYPE , ROUTINE_NAME from information_schema.ROUTINES
where ROUTINE_NAME = 'simpleproc'
;
如果要导出,可以装到一个表中导出:
create table mp_proc
as
select name, param_list ,returns, body
from mysql.proc
where name = 'simpleproc'
;
然后mp出来.或者 tee出到文件。
⑤ MySQL的存储过程,怎么没法输出结果
mysql中要获得存储过程的返回值,可以增加一个out参数,用来返回。
mysql中存储过程的例子:
CREATE PROCEDURE addvoucher (
IN userid INT,
IN voucherid INT,
OUT result INT
)
⑥ 怎样得到mysql存储过程多条语句的结果集
存储过程经常需要返回多个结果集。 Mysql 中直接用 select 即可返回结果集。而 oracle 则需要使用游标来返回结 果 集。这一点 Mysql 相对比较方便,如下代码即可实现输出两个结果集:
CREATE PROCEDURE test_proc_multi_select()
BEGIN
select * from testproc;
select * from testproc where id=1;
END;
java 中利用循环,即可获取结果集数据:
con = MConnection.getConn();
String sql = "{call test_proc_multi_select()}";
cs = con.prepareCall(sql);
boolean hadResults = cs.execute();
int i = 0;
while (hadResults) {
System.out.println("result No:----" + (++i));
ResultSet rs = cs.getResultSet();
while (rs != null && rs.next()) {
int id1 = rs.getInt(1);
String name1 = rs.getString(2);
System.out.println(id1 + ":" + name1);
}
hadResults = cs.getMoreResults(); // 检查是否存在更多结果集
}
⑦ sql server存储过程用print就能打印,mysql存储过程能打印么应该也行吧,但是找不到呢
每种语言都有自己的特色:
sqlserver 可以 print,可以直接select 返回数据。
其他语言不一定能行的。
比如Oracle,就不能直接select,不能直接print返回数据,只能通过其他函数显示在控制台上,无法返回。
mysql我不熟悉,但我想不一定有这种功能,用这个试试:
好像Mysql存储过程中没有打印语句,可以用select 来代替,比如:
select @var;
在换不同语言的时候,旧的习惯会很困扰我们的。
⑧ mysql里的打印(输出)是那个命令,就是相当于mssql里的print
好像有点悲剧,只能用 SELECT.
就像下面这个 Hello World 一样。
mysql> DELIMITER //
mysql> CREATE PROCEDURE HelloWorld()
-> BEGIN
-> SELECT 'Hello World';
-> END//
Query OK, 0 rows affected (0.00 sec)
mysql> call HelloWorld();
-> //
+-------------+
| Hello World |
+-------------+
| Hello World |
+-------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
⑨ 编写java程序实现把MySQL数据库中的student表中数据进行打印输出
首先导入 mysql-connector-java-5.1.45-bin.jar 包7a686964616f31333365633936
代码如下:
import java.io.*;import java.sql.*; public class App { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); // 数据库用户 String user = "root"; // 数据库密码 String password = ""; Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_sale", user, password); Statement stmt = conn.createStatement(); // 查询 , 从数据库 db_sale 的 proct 表中查询 id, name, qty 字段 ResultSet rs = stmt.executeQuery("SELECT id, name, qty FROM proct"); // 创建输出文件 result.txt File file = new File("d://result.txt"); OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file)); while (rs.next()) { writer.write(String.valueOf(rs.getLong(1)) + "\t"); writer.write(rs.getString(2) + "\t"); writer.write(String.valueOf(rs.getInt(3))); writer.write("\r\n"); //System.out.println(rs.getLong(1)); //System.out.println(rs.getString(2)); //System.out.println(rs.getLong(3)); } writer.flush(); writer.close(); rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } }}