ADO或odbc如何创建存储过程中创建表报错和表

存储过程如下:
CREATEPROCEDURETestSP @IDint AS RETURN@@ERROR GO
网上的例子都是用Sql的对象来传参数的,于是使用相同的格式写了代码,结果不能传参数,代码如下:
try { OdbcConnectionm_cConn=newOdbcConnection(); OdbcCommandm_cCommand=newOdbcCommand(); OdbcParametercParam=newOdbcParameter("@ID",OdbcType.Int,4); m_cConn.ConnectionString="Dsn=MySQLStrusted_connection=Ywsid=BINARYTREE;database=SimpleProjectDB"; m_cConn.Open(); m_cCommand.Connection=m_cC m_cCommand.CommandText="TestSP"; m_cCommand.CommandType=CommandType.StoredP m_cCommand.Parameters.Add(cParam); m_cCommand.ExecuteNonQuery(); } catch(ExceptioncEx) {
上面的代码运行到m_cCommand.ExecuteNonQuery(); 时出异常,说是参数没有找到,问题出在CommandText属性的设置上。正确的格式应该如下:
m_cCommand.CommandText="{CALL TestSP(?)}";
sql2005存储过程,通过不同的返回值(整型)表示不同的结果。
但是在使用OdbcCommand调用该存储过程时,获取到的返回值始终不对。代码如下:
OdbcCommand cmd = ne...
Sql Server
存储过程 传递参数 有时候需要 “1,2,3” 这样的参数
---------------------------
declare @AreadBranchID nvarc...
最近在做开发过程中碰到这么一个纠结的问题,需要同时插入N条数据,不想在程序里控制,但是SQL Sever又不支持数组参数.所以只能用变通的办法了.利用SQL Server强大的字符串处理传把数组格式化...
创建一个MSSQL存储过程:CREATE PROCEDURE dbo.P__Test_GetData( @UserId int, @UserName nvarchar(100) output)Asse...
C#调用SQL Server参数过程传参,传参/输出/返回值
http://blog.csdn.net/emili/article/details/4263084
一台 Windows 服务器,装有 SQL Se...
$strDbUser = '用户名';
$strDbPass = '数据库密码';
$strDbHost = '主机地址';
$strDbName...
在存储过程中使用IN函数,传入多个参数时,会有问题,因为输入参数(1,2,3) 是一个数据,而不是一个集合,导致sql失效
三种解决方案:
1、建立函数分割输入参数里面的“,”
create FUNC...
一、SqlApi介绍
SqlApi++是一个为访问Sql数据库而编写的库。支持对Oracle,
SQL Server, DB2, Sybase, Informix, InterBas...
没有更多推荐了,由 匿名 (未验证)
一:Java如何实现对存储过程的调用:
&& A:不带输出参数的
&& —————不带输出参数的———————————-
create procedure getsum
@n int =0&–此处为参数–&
declare @sum int&–定义变量–&
declare @i int
set @sum=0
while @i&=@n begin
set @sum=@sum+@i
set @i=@i+1
print ‘the sum is ‘+ltrim(rtrim(str(@sum)))
————–在SQL中执行:——————–
&& exec getsum 100
————在JAVA中调用:———————
&& JAVA可以调用&& 但是在JAVA程序却不能去显示该存储过程的结果 因为上面的存储
&& 过程的参数类型int 传递方式是in(按值)方式
import java.sql.CallableS //带哦用存储过程所必须的语句借口
import java.sql.C
import java.sql.DriverM
java.sql包下接口CallableStatement是使用存储过程必须的语句接口,Connection接口用来获得数据库连接,DriverManager用来加载数据库连接驱动。&& import java.sql.*;public class ProcedureTest&{public static void main(String args[]) throws Exception{&& //加载驱动&& DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());&& //获得连接&& Connection conn=DriverManager.getConnection(“jdbc:odbc:mydata”,”sa”,”“);
&&&&&&&& //创建存储过程的对象,call后面就是存储过程名和需要传递的参数
&&&&&&&& CallableStatement c=conn.prepareCall(“{call
getsum(?)}”);
&&&&&&&& //给存储过程的参数设置值
&&&&&&&& c.setInt(1,100);&& //将第一个参数的值设置成100
&&&&&&&& //执行存储过程
&&&&&&&& c.execute();
&&&&&&&& conn.close();
&& B:带输出参数的
&&&& 1:返回int
&&&&&&&& ————————-带输出参数的—————-
alter procedure getsum
@n int =0,
@result int output
declare @sum int
declare @i int
set @sum=0
while @i&=@n begin
set @sum=@sum+@i
set @i=@i+1
set @result=@sum
&& ——————-在查询分析器中执行————
&& declare @myResult int
exec getsum 100,@myResult output
print @myResult
&& ————在JAVA中调用———————
import java.sql.*;
public class ProcedureTest&
public static void main(String args[]) throws Exception
&& //加载驱动
&& DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
&& //获得连接
&& Connection conn=DriverManager.getConnection(“jdbc:odbc:mydata”,”sa”,”“);
&&&&&&&& //创建存储过程的对象
&&&&&&&& CallableStatement c=conn.prepareCall(“{call getsum(?,?)}”);
&&&&&&&& //给存储过程的第一个参数设置值
&&&&&&&& c.setInt(1,100);
&&&&&&&& //注册存储过程的第二个参数
&&&&&&&& c.registerOutParameter(2,java.sql.Types.INTEGER);//指定输出参数类型
&&&&&&&& //执行存储过程
&&&&&&&& c.execute();
&&&&&&&& //得到存储过程的输出参数值
&&&&&&&& System.out.println (c.getInt(2));
&&&&&&&& conn.close();
&&&& 2:返回varchar
&&&&&& —————-存储过程带游标—————-—在存储过程中带游标&& 使用游标不停的遍历orderidcreate procedure CursorIntoProcedure@pname varchar(8000) outputas–定义游标。同时指定一个结果集给游标对象,关于游标的知识可以参考本人专门的对—游标的博客declare cur
cursor for select orderid from orders–定义一个变量来接收游标的值declare @v varchar(5)–打开游标open curset @pname=”––提取游标的值fetch next from cur into @vwhile @@fetch_status=0&& begin
set @pname=@pname+’;’+@v
&& fetch next from cur into @v
print @pname–关闭游标
–销毁游标
deallocate cur
&& ————执行存储过程————–
exec CursorIntoProcedure ”
&& ————–JAVA调用——————
import java.sql.*;
public class ProcedureTest&
public static void main(String args[]) throws Exception
&& //加载驱动
&& DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
&& //获得连接
&& Connection conn=DriverManager.getConnection(“jdbc:odbc:mydata”,”sa”,”“);
&& CallableStatement c=conn.prepareCall(“{callCursorIntoProcedure(?)}”);
//注册存储过程的第二个参数,阿拉伯数字指定第几个参数,第二个参数指定类型
&& c.registerOutParameter(1,java.sql.Types.VARCHAR);
&& c.execute();
&& System.out.println (c.getString(1));
&& conn.close();
&& C:删除数据的存储过程
&&&& ——————存储过程————————–
drop table 学生基本信息表
create table 学生基本信息表
StuID int primary key,
StuName varchar(10),
StuAddress varchar(20)
insert into&& 学生基本信息表 values(1,’三毛’,’wuhan’)
insert into&& 学生基本信息表 values(2,’三毛’,’wuhan’)
create table 学生成绩表
StuID int,
Chinese int,
PyhSics intforeign key(StuID) references&& 学生基本信息表(StuID)
on delete cascade
on update cascade//级联操作
insert into&& 学生成绩表 values(1,99,100)
insert into&& 学生成绩表 values(2,99,100)
–创建存储过程&
create procedure delePro
@StuID int
delete from 学生基本信息表 where StuID=@StuID
–创建完毕
exec delePro 1&& –执行存储过程
–创建存储过程
create procedure selePro
select * from 学生基本信息表
–创建完毕
exec selePro&& –执行存储过程
&&&& ——————在JAVA中调用—————-
import java.sql.*;
public class ProcedureTest&
public static void main(String args[]) throws Exception
&& //加载驱动
&& DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
&& //获得连接
&& Connection conn=DriverManager.getConnection(“jdbc:odbc:mydata”,”sa”,”“);
&&&&&&&& //创建存储过程的对象
&&&&&&&& CallableStatement c=conn.prepareCall(“{call
delePro(?)}”);
&&&&&&&& c.setInt(1,1);
&&&&&&&& c.execute();
&&&&&&&& c=conn.prepareCall(“{call selePro}”);
&&&&&&&& ResultSet rs=c.executeQuery();
&&&&&&&& while(rs.next())
&&&&&&&& {
&&&&&&&& String Stu=rs.getString(“StuID”);
&&&&&&&& String name=rs.getString(“StuName”);
&&&&&&&& String add=rs.getString(“StuAddress”);
&&&&&&&& System.out.println (“学号:”+”&&&& “+”姓名:”+”&&&& “+”地址”);
&&&&&&&& System.out.println (Stu+”&&&& “+name+”&& “+add);
&&&&&&&& }
&&&&&&&& c.close();
&& D:修改数据的存储过程
———————创建存储过程———————
&& create procedure ModPro
@StuID int,
@StuName varchar(10)
update 学生基本信息表 set StuName=@StuName where StuID=@StuID
&& ————-执行存储过程————————-
exec ModPro 2,’四毛’
&& —————JAVA调用存储过程——————–
import java.sql.*;
public class ProcedureTest&
public static void main(String args[]) throws Exception
&& //加载驱动
&& DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
&& //获得连接
&& Connection conn=DriverManager.getConnection(“jdbc:odbc:mydata”,”sa”,”“);
&&&&&&&& //创建存储过程的对象
&&&&&&&& CallableStatement c=conn.prepareCall(“{call ModPro(?,?)}”);
&&&&&&&& c.setInt(1,2);
&&&&&&&& c.setString(2,”美女”);
&&&&&&&&&&&&&&&&
&&&&&&&& c.execute();
&&&&&&&& c=conn.prepareCall(“{call selePro}”);
&&&&&&&& ResultSet rs=c.executeQuery();
&&&&&&&& while(rs.next())
&&&&&&&& {
&&&&&&&& String Stu=rs.getString(“StuID”);
&&&&&&&& String name=rs.getString(“StuName”);
&&&&&&&& String add=rs.getString(“StuAddress”);
&&&&&&&& System.out.println (“学号:”+”&&&& “+”姓名:”+”&&&& “+”地址”);
&&&&&&&& System.out.println (Stu+”&&&& “+name+”&& “+add);
&&&&&&&& }
&&&&&&&& c.close();
&& E:查询数据的存储过程(模糊查询)
&&&& —————–存储过程———————
create procedure FindCusts
@cust varchar(10)
select customerid from orders where customerid&
like ‘%’+’%’
&&&& —————执行—————————
execute FindCusts ‘alfki’
&& ————-在JAVA中调用————————–
import java.sql.*;
public class ProcedureTest&
public static void main(String args[]) throws Exception
&& //加载驱动
&& DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
&& //获得连接
&& Connection conn=DriverManager.getConnection(“jdbc:odbc:mydata”,”sa”,”“);
&&&&&&&& //创建存储过程的对象
&&&&&&&& CallableStatement c=conn.prepareCall(“{call
FindCusts(?)}”);
&&&&&&&& c.setString(1,”Tom”);
&&&&&&&& ResultSet rs=c.executeQuery();
&&&&&&&& while(rs.next())
&&&&&&&& {
&&&&&&&& String cust=rs.getString(“customerid”);&&&&&&&&
&&&&&&&& System.out.println (cust);
&&&&&&&& }
&&&&&&&& c.close();
&& F:增加数据的存储过程
————存储过程——————–
create procedure InsertPro
@StuID int,
@StuName varchar(10),
@StuAddress varchar(20)
insert into 学生基本信息表 values(@StuID,@StuName,@StuAddress)
———–调用存储过程—————
exec InsertPro 5,’555’,’555’
———–在JAVA中执行————-
import java.sql.*;
public class ProcedureTest&
public static void main(String args[]) throws Exception
&& //加载驱动
&& DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
&& //获得连接
&& Connection conn=DriverManager.getConnection(“jdbc:odbc:mydata”,”sa”,”“);
&&&&&&&& //创建存储过程的对象
&&&&&&&& CallableStatement c=conn.prepareCall(“{call InsertPro(?,?,?)}”);
&&&&&&&& c.setInt(1,6);
&&&&&&&& c.setString(2,”Liu”);
&&&&&&&& c.setString(3,”wuhan”);
&&&&&&&& c.execute();
&&&&&&&& c=conn.prepareCall(“{call selePro}”);
&&&&&&&& ResultSet rs=c.executeQuery();
&&&&&&&& while(rs.next())
&&&&&&&& {
&&&&&&&& String stuid=rs.getString(“StuID”);&&&&&&&&
&&&&&&&& String name=rs.getString(“StuName”);&&&&&&&&
&&&&&&&& String address=rs.getString(“StuAddress”);&&&&&&&&
&&&&&&&& System.out.println (stuid+”&& “+name+”&& “+address);
&&&&&&&& }
&&&&&&&& c.close();
G:在JAVA中创建存储过程&& 并且在JAVA中直接调用
import java.sql.*;
public class ProcedureTest&
public static void main(String args[]) throws Exception
&& //加载驱动
&& DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
&& //获得连接
&& Connection conn=DriverManager.getConnection(“jdbc:odbc:mydata”,”sa”,”“);
& &//在java中创建存储过程,需要声明Statement对象
&& Statement stmt=conn.createStatement();
&& //在JAVA中创建存储过程&& stmt.executeUpdate(“create procedureOOP
as select * from 学生成绩表”);
& &//调用存储过程
&& CallableStatement c=conn.prepareCall(“{call OOP}”);
&& ResultSet rs=c.executeQuery();
&& while(rs.next())
&& String chinese=rs.getString(“Chinese”);
&& System.out.println (chinese);
&& conn.close();
&/article&存储过程如下:CREATE PROCEDURE TestSP @ID int AS RETURN @@ERROR GO 网上的例子都是用Sql的对象来传参数的,于是使用相同的格式写了代码,结果不能传参数,代码如下:try { OdbcConnection m_cConn = new OdbcConnection(); OdbcCommand m_cCommand = new OdbcCommand(); OdbcParameter cParam = new OdbcParameter("@ID", OdbcType.Int, 4); m_cConn.ConnectionString = "Dsn=MySQLStrusted_connection=Ywsid=BINARYTREE;database=SimpleProjectDB"; m_cConn.Open(); m_cCommand.Connection = m_cC m_cCommand.CommandText = "TestSP"; m_cCommand.CommandType = CommandType.StoredP m_cCommand.Parameters.Add(cParam); m_cCommand.ExecuteNonQuery(); } catch (Exception cEx) {
} 上面的代码运行到m_cCommand.ExecuteNonQuery(); 时出异常,说是参数没有找到,问题出在CommandText属性的设置上。正确的格式应该如下:m_cCommand.CommandText = "{CALL TestSP(?)}";
ODBC 执行存储过程获取返回值
sql2005存储过程,通过不同的返回值(整型)表示不同的结果。
但是在使用OdbcCommand调用该存储过程时,获取到的返回值始终不对。代码如下:
OdbcCommand cmd = ne...
PB中调用存储过程
PB中调用存储过程完整编程
ll_Count,ll_flag
php连接sqlserver
* @author samsun
* @copyright 2007
* php使用ODBC连接sql server数据库实例
php调用MSSQL存储过程的方法
创建一个MSSQL存储过程:CREATE PROCEDURE dbo.P__Test_GetData( @UserId int, @UserName nvarchar(100) output)Asse...
PHP中通过ODBC连接SQL Server数据库
http://blog.csdn.net/emili/article/details/4263084
一台 Windows 服务器,装有 SQL Se...
PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)
(转)在PB中用oracle的存储过程返回记录集做数据源来生成数...
declare @value varchar(MAX)
tmfun_GetSearchStr
'陕西','Table1','Name',@value output
select * fr...
VB中调用带&em&参数存储过程&/em&
上传大小:4KB &em&存储过程&/em& 分享 VB做为快速应用开发(RAD)工具越来越得到开发人员的认可和接受。它对许多API(如&em&ODBC&/em& API、SOCKET...
在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大。如果是返回数据集的存储过程则需要利用oracle的包来定义游标。 但是若...
create proc gc @str varchar(20) as begin declare @sql as varchar(100) set @sql=select * from +@str e...
没有更多推荐了,}

我要回帖

更多关于 存储过程创建表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信