1,调用没有参数的存储过程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{call nono}"
'set rs=cmc.exe 或者cmd.execute
set rs=cmd.Execute()
%>
2,一个输入的参数的存储过程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{call oneinput(?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger ,adParamInput )
cmd("@aaa")=100
cmd.Execute()
%>
3,一个输入参数和一个输出的参数
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText = "{call oneinout(?,?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput)
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)
cmd.Execute()
bbb=cmd("@bbb")
%>
4,一个输入参数,一个输出参数,和一个返回值
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{?=call onereturn(?,?)}"
cmd.Parameters.Append cmd.CreateParameter("@return_value",adInteger,adParamReturnValue )
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput )
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)
cmd.Execute()
bbb=cmd("@bbb")
rrr=cmd("@return_value")
%>
B. 数据库的带有参数的存储过程的创建 急 考试!!!
CREATE PROCEDURE P1
@XH VARCHAR(10),@XM VARCHAR(10) OUTPUT,@XB CHAR(2) OUTPUT,@ZY VARCHAR(10) OUTPUT,@X VARCHAR(20) OUTPUT AS
SELECT @XM=姓名,@XB=性别,@ZY=专业裂肆,@X=所在系
FROM 学生表 WHERE 学号=@XH
go
--调用
DECLARE @XM VARCHAR(10),@XB CHAR(2),@ZY VARCHAR(10),@X VARCHAR(20)
EXECUTE P1 'S001',@XM OUTPUT,@XB OUTPUT,@ZY OUTPUT,@X OUTPUT
PRINT '姓名:'+@XM+'性别:'+@XB+'专业:'+@ZY+'所在系睁旅:肆早轿'+@x
C. 数据库存储过程是什么
问题一:sql数据库中的存储过程该怎么理解 有什么用啊? 存储过程是SQL 语句和流程控制语句的预编译 *** ,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
问题二:数据库中什么是存储过程?作用是什么? 存储过程,就是带有名字的一个程序块。
存储,是指这个程序块创建了之后,是存储在数据库内部的,然后我们可以在自己写的程序中通过某种手段去调用这段程序,然后这段程序就会做一件事,做什么事?我们定义存储过程的时候怎么写的,它到时候就做什么;
过程,就是程序块,说白了就是一段程序。
存储过程,创建完成之后,就存储在数据库内部了,数据库帮你记着,存储过程创建的时候都有一个名字,将来你在你的程序当中,通过某种方式(不同编程语言有不同的方式),一般来讲通过这个名字,去调用存储过程,就像使用一个方法或者函数一样,它就去做一件事!
不同的数据库的存储过程,都是用当前自己这个数据库的编程语言来编写的,比如Oracle的PL/SQL编程,等等。
自己写一个就明白了,语法不用我多说了吧?
问题三:什么叫作数据库的存储过程? 存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,并且这样的语句是放在数据库中的,还可以根据条件执行不同SQL语句, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。 存储过程的优点 1.存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。可以极大的提高数据库的使用效率,减少程序的执行时间,这一点在较大数据量的数据库的操作中是非常重要的。在代码上看,SQL语句和程序代码语句的分离,可以提高程序代码的可读性。 3.存储过程可以设置参数,可以根据传入参数的不同重复使用同一个存储过程,从而高效的提高代码的优化率和可读性。 4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权存储过程的种类: (1)系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作,如 sp_help就是取得指定对象的相关信息。 (2)扩展存储过程 以XP_开头,用来调用操作系统提供的功能exec master..xp_cmdshell 'ping 10.8.16.1' (3)用户自定义的存储过程,这是我们所指的存储过程常用格式 模版:Create procere procee_name [@parameter data_type][output][with]{repile|encryption} as sql_statement 解释:output:表示此参数是可传回的 with {repile|encryption} repile:表示每次执行此存储过程时都重新编译一次;encryption:所创建的存储过程的内容会被加密。
问题四:数据库中存储过程有什么主要作用,或都说它的主要用途? 存储过程的概念
存储过程(Stored Procere)是一组预先编绎好的Transact-SQL语句。将其放在服务器上,由用户通过指定存储过程的名字来执行它。存储过程可以作为一个独立的数据库对象,也可以作为一个单元被用户的应用程序调用。存储过程可以接收和输出参数,返回执行存储过程的状态值,还可以嵌套调用。
存储过程同其他编程语言中的过程(Procere)类似,主要体现在以下几个方面:
(1)存储过程可以接收参数,并以接收参数的形式返回多个参数给调用存储过程和批处理。
(2)包含执行数据库操作的编程语句,也可以调用其他的存储过程。
(3)向调用过程或批处理返回状态值,以反映存储过程的执行情况。
注意:存储过程跟函数不同,存储过程不能在被调用的位置上返回数据,也不能被应用在语句当中,例如不可以用类似“@Proc=存储过程名”的方式使用存储过程。但是,存储过程可以使用变量的形式来返回参数。
存储过程的优点表现在以下几个方面:
(1)执行速度快
存储过程在创建时就经过了语法检查和性能优化,因此在执行时不必再重复这些步骤。存储过程在第一次调用后,就驻留在内存中,不必再经过编译和优化,所以执行速度很快。在有大量批处理的Transact-SQL语句要重复执行的时候,使用存储过程可以极大地提高运行效率。
(2)模块化程序设计
只需创建存储过程一次,并将其存储在数据库中,可以在程序中多次调用该存储过程。用户可以独立于应用程序而对存储过程进行修改。
(3)减少网络通信量
存储过程中可以包含大量的Transact-SQL语句。在进行调用时,只需要使用一条语句就可以实现,而不需要在网络中发送数百行代码。
(4)保证系统的安全性
可以设置用户通过存储过程来对某些关键数据进行访问,但不允许用户直接使用Transact-SQL语句或企业管理器来对数据进行访问。
问题五:数据库存储过程和函数的区别 函数分两种,表值函数跟标量函数
表值函数最后要返回一个表变量,而标量函数最后要返回一个标量值
存储过程即一组批处理,可以返回或不返回值,仅仅是执行其内部的全部语句
函数可以与一般sql语句一同编写,而存储过程不可以,需要单独执行
问题六:数据库编辑存储过程是什么意思 一般来说,程序员都希望编写出来的程序能有最大化的应变能力,存储过程的最大作用是可以降低代码维护的工作量,很多需求的变化不用修改代码进而发布程序,而只需要调整一下存储过程即可实现
例如你打算开发一个报表,该报表会对数据库的数据进行一定程度的加工,然后再呈现给用户,那么你的实现方法有两个
1. 使用代码调用SQL,取到基础数据后,在程序代盯里面进行加工,并呈现给用户
2. 也可以编写一段存储过程,该存储过程先取基础数据,然后在存储过程里面进行数据加工,最后把最终的结果一次性的反馈给程序代码,程序代码只需要把执行完存储过程的结果呈现给用户即可
这两个方法都可以实现你想实现的功能,但是如果万一有一天需求变化了,用户需要呈现的结果中增加或者减少了部分内容,那么第一个方法就只能修改代码了,而第二个方法只需要调整存储过程即可实现
问题七:在SQL中存储过程的一般语法是什么? sql server存储过程语法
存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。
定义总是很抽象。存储过程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL Server)。如果我们通过创建存储过程以及在ASP中调用存储过程,就可以避免将SQL语句同ASP代码混杂在一起。这样做的好处至少有三个:
第一、大大提高效率。存储过程本身的执行速度非常快,而且,调用存储过程可以大大减少同数据库的交互次数。
第二、提高安全性。假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密。
第三、有利于SQL语句的重用。
在ASP中,一般通过mand对象调用存储过程,根据不同情况,本文也介绍其它调用方法。为了方便说明,根据存储过程的输入输出,作以下简单分类:
1. 只返回单一记录集的存储过程
假设有以下存储过程(本文的目的不在于讲述T-SQL语法,所以存储过程只给出代码,不作说明):
/*SP1*/
CREATE PROCEDURE dbo.getUserList
as
set nocount on
begin
select * from dbo.[userinfo]
end
go
以上存储过程取得userinfo表中的所有记录,返回一个记录集。通过mand对象调用该存储过程的ASP代码如下:
'**通过mand对象调用存储过程**
DIM Mym,MyRst
Set Mym = Server.CreateObject(ADODB.mand)
Mym.ActiveConnection = MyConStr 'MyConStr是数据库连接字串
Mym.mandText = getUserList '指定存储过程名
Mym.mandType = 4 '表明这是一个存储过程
Mym.Prepared = true '要求将SQL命令先行编译
Set MyRst = Mym.Execute
Set Mym = Nothing
存储哗程取得的记录集赋给MyRst,接下来,可以对MyRst进行操作。
在以上代码中,mandType属性表明请求的类型,取值及说明如下:
-1 表明mandText参数的类型无法确定
1 表明mandText是一般的命令类型
2 表明mandText参数是一个存在的表名称
4 表明mandText参数是一个存储过程的名称
还可以通过Connection对象或Recordset对象调用存储过程,方法分别如下:
'**通过Connection对象调用存储过程**
DIM MyConn,MyRst
Set MyConn = Server.CreateObject(&qu......>>
问题八:T-SQL和存储过程有什么区别 20分 区别T-SQL是语言,存储过程是数据库一种对象
T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。
? 存储过程的概念
存储过程Procere是一组为了完成特定功能的SQL语句 *** ,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。
问题九:数据库存储过程怎么调用存储过程 在存储过程里用exec执行另一存储过程名及它需要的参数就可以了
如 exec abc '1', '2' (abc 是存储过程的名字, '1','2' 是它的参数)
D. sql server 中 一个要输入参数和输出参数的存储过程。
1、首先我们需要打开SQL Server Managment管理工具,新建一个表。
E. 在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程序里的调用。
F. SQL Server 如何执行 带参数的 存储过程
带参数的存储过程执行方法如下:
(1)调用通用数据访问类:SqlHelper,执行SqlHelper.ExecuteNonQuery()方法
(2)使敬誉春用示例:SqlHelper.ExecuteNonQuery(conn,CommandType.StoredProcere,sqlexec,myparm)
(3)其中传递的4个参数如下:
“conn”:为链接字符
“CommandType.StoredProcere”:表示要执亮耐行的SQL存储过程类型
“sqlexec”:要执行的SQL存储过程
“myparm”:为传递的参虚冲数,它需要参数的初始化、赋予参数名称、设定类型、长度和值等
(4)当ExecuteNonQuery()执行select 查询时,结果总是返回-1。ExecuteNonQuery()执行Update、Insert和Delete语句时,返回值为该命令所影响的行数。
G. 我在sql server2008数据库里面创建了一个带参数的存储过程,在VS里面调用,明明给了参数,为什么还报错
作为第一个参数,也将NEWID()也放入唤睁迟存储过程试试。
下面是sql帮助中的说明:
SQL函数中不能使用“不确定函数”,只要是早桥每次执行都返回不同结和李果的函数都无法使用,这些“不确定函数”会导致自定义的函数也变得不确定,而SQL不支持用户编写“不确定函数”。
H. 带参数的存储过程如何去写谁给举个例子
写带有参数存储过程应该是sql数据库的问题:
先建立一个表,并添加一些数据来陆辩进行演示:
create
table
t_student(
id
int
not
null,
name
nvarchar
(10)
null,
age
tinyint
null,
school
nvarchar(20)
null,
class
nvarchar(10)
null,
score
float
null,
constraint
[pk_student_id]
primary
key
clustered(id)
)
go
insert
into
t_student
values(1,'张小红',8,'育才小学','一班',92)
insert
into
t_student
values(2,'王丽丽',8,'育才小学','一班',90)
insert
into
t_student
values(3,'张燕',7,'云华小学','二班',86)
insert
into
t_student
values(4,'刘华',6,'云华小学','二班',85)
一、exec
exec命令可以执行一个存储过程也可以执行一个动态sql语句。先来看看怎么执行存储过程:
新建一个存储过程
sp_getstudent
,返回
成绩大于90
分的学生:
create
procere
[dbo].[sp_getstudent]
@score
float,
@nums
int
output
as
begin
set
nocount
on;
select
*
from
t_student
where
score
>=@score
select
@nums=count(1)
from
t_student
where
score
>=@score
if(@nums>0)
return
1
else
return
0
end
go
该存储过程涉及了
查询操作、返回值和输出参数,我们来看用exec
命令如何调用:
declare
@return_value
int,
@outnums
int
exec
@return_value
=
[dbo].[sp_getstudent]
@score
=
90,
@nums
=
@outnums
output
select
@outnums
as
n'大于90分的人数'早李缺
select
'返回值'
=
@return_value
go
执行结果:
我们发现exec
执行存储过程和我们平时程序执行一个方法是几乎一样的,返回值参数
直接就可以等于存储过程的扰拍执行后的返回值,输出参数
在后面需要增加
output
关键字。
I. sql数据库中怎样调用带参数的存储过程
1、使用SQL语句
--a)方式一
--exec存储过程名称参数名='值'
execP_Titles_ByType@type='business'
go
--b)方式二
--exec存储过程名称参数值
execP_Titles_ByType'business'
2、可视化操作
a.在数据库中找到要执行的存储过程
b.右击存储过程,在出现的菜单中选择执行存储过程选项
c.在新出现的对话框中,在对应的参数后面的值列填入对应的参数值
d.填写完参数值,最后点击确定,然后查询结果会出现
图-b
J. Sqlserver2005数据库如何写带参数的存储过程
给裤友你一个我以前做过的例子吧。有什么不会的可以交流一下
创建一个存储过程展胡蔽槐示学生成绩排名
输入参数:考试代码、班级编码、科目编码
要求:如果班级为*,则表示所有班级
如果科目为*,则表示所有科目
--存储过并猛程
if exists(select * from dbo.sysobjects where name='studentpm'and xtype='p')
begin
drop PROCEDURE [studentpm]
end
go
CREATE PROCEDURE studentpm @SCNo varchar(10),@CLNo varchar(10),@CNo varchar(10),@sMsg varchar(200) out
AS
declare @SQL varchar(8000)
Begin
if not exists(select * from Score sc,Class cl,Cource co,Student st
where sc.SNo=st.SNo and sc.CNo=co.CNo and cl.CLNo=st.SClassNo and sc.SCNo=@SCNo)
begin
SET @sMsg='考试代码不存在'
--print(@sMsg)
return (-1)
end
set @SQL='select st.SName,sc.SCGrade,sc.SCNo from Score sc,Class cl,Cource co,Student st
where sc.SNo=st.SNo and sc.CNo=co.CNo and cl.CLNo=st.SClassNo'
if (@CLNo<>'*')
set @sql=@sql +' and cl.CLNo='''+@CLNo+''''
if @CNo<>'*'
set @sql=@sql +' and co.CNo='''+@CNo+''''
set @sql=@sql+' order by sc.SCGrade desc'
print (@sql)
exec (@sql)
Return 1
End
go
调用:
declare @sMsg varchar(200)
declare @iRtn int
EXEC MyTestDB.DBO.studentpm '003','002','002',@sMsg out
EXEC MyTestDB.DBO.studentpm '003','*','*',@sMsg out
EXEC @iRtn=MyTestDB.DBO.studentpm '004','*','*',@sMsg out
--print(@iRtn)
print(@sMsg)