跪求一个asp带返回值的存储过程实例
表结构:IDUserIDDexMoney1name1男1000002name2男1000003name3男1000004name4男1234输入参数“ID”后得到相应的“...
表结构:
ID UserID Dex Money
1 name1 男 100000
2 name2 男 100000
3 name3 男 100000
4 name4 男 1234
输入参数“ID”后得到相应的“UserID”,"Sex”,"Money",显示到页面上。
SQL存储过程什么写?
ASP调用怎么写?
小弟是个初学者,在此万分感谢!!!
我好想说的不太明白,再详细说一下。
我想在调用存储过程程序里输入参数ID=4,然后存储过程返回ID=4的这条记录 姓名:name4、性别:男、存款:1234.
说白了就是用存储过程查找一条条件符合的记录然后显示出来 展开
ID UserID Dex Money
1 name1 男 100000
2 name2 男 100000
3 name3 男 100000
4 name4 男 1234
输入参数“ID”后得到相应的“UserID”,"Sex”,"Money",显示到页面上。
SQL存储过程什么写?
ASP调用怎么写?
小弟是个初学者,在此万分感谢!!!
我好想说的不太明白,再详细说一下。
我想在调用存储过程程序里输入参数ID=4,然后存储过程返回ID=4的这条记录 姓名:name4、性别:男、存款:1234.
说白了就是用存储过程查找一条条件符合的记录然后显示出来 展开
4个回答
展开全部
存储过程如下:
CREATE procedure [dbo].[sp_name]
@a_id bigint,
@a_name varchar(30),
@a_sex varchar(1),
@a_age int,
@v_flag int output
AS
SET NOCOUNT ON
update BB set name = @a_name
where id = @a_id
IF (@@ERROR <> 0)
set @v_flag = @@ERROR -- 发生了错误
ELSE
set @v_flag = 0 -- 成功
1、在ASP脚本里需要检查过程的返回值,如果是 -1,表示更新数据失败, 0=成功。
2、由于更新的只是一个表的数据,所以无所谓回滚。只要操作失败,肯定没有更新到数据库;成功才会更新。
3、存储过程的执行需要五个参数,分别为id、name、sex、age、flag。前面四个是传入参数,最后一个是传出,脚本只需要检测flag的返回值即可。 其SQL语句类似:
exec sp_name id, 'name', 'sex', age, flag
注意由于name、sex都是char类型,所以需要用引号引起来。
CREATE procedure [dbo].[sp_name]
@a_id bigint,
@a_name varchar(30),
@a_sex varchar(1),
@a_age int,
@v_flag int output
AS
SET NOCOUNT ON
update BB set name = @a_name
where id = @a_id
IF (@@ERROR <> 0)
set @v_flag = @@ERROR -- 发生了错误
ELSE
set @v_flag = 0 -- 成功
1、在ASP脚本里需要检查过程的返回值,如果是 -1,表示更新数据失败, 0=成功。
2、由于更新的只是一个表的数据,所以无所谓回滚。只要操作失败,肯定没有更新到数据库;成功才会更新。
3、存储过程的执行需要五个参数,分别为id、name、sex、age、flag。前面四个是传入参数,最后一个是传出,脚本只需要检测flag的返回值即可。 其SQL语句类似:
exec sp_name id, 'name', 'sex', age, flag
注意由于name、sex都是char类型,所以需要用引号引起来。
追问
这个也不对啊!!这是个修改记录功能,也没有调用过程。各位给个正确答案吧
展开全部
存储过程的调用,与执行普通的SQL语然没什么区别
存储过程一般也是通过记录集返回数据的;
CREATE PROCEDURE 存储过程名称 -- 相当于函数function GetInfo( id )
@ID int -- 过程的参数,多个时以,隔开
AS
BEGIN -- 开始 相当于{
SELECT UserId, Dex, Money
FROM 表名
WHERE ID = @ID;
END -- 结束 相当于}
调用方法:存程过程名称 参数1,参数2
存储过程一般也是通过记录集返回数据的;
CREATE PROCEDURE 存储过程名称 -- 相当于函数function GetInfo( id )
@ID int -- 过程的参数,多个时以,隔开
AS
BEGIN -- 开始 相当于{
SELECT UserId, Dex, Money
FROM 表名
WHERE ID = @ID;
END -- 结束 相当于}
调用方法:存程过程名称 参数1,参数2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
过程是:首先连接数据库,开库。
set conn=server.Creatobject("adodb.connetion")
conn.open(“driver=[SQL Server];server=127.0.0.1;database=表名;uid=用户名;pwd=密码”)
现在库就连接上啦 然后读数据库的表的内容存在rs里
set rs=Server.Creatobject("adodb.recordset")
rs.open "select * from 表名“,conn,1,1.
最后,输出读出的表内容。
response.write(rs("ID)) 或者response.write(rs("UserID"))什么的,想怎么输出就怎么输出啦.用个循环,然后rs.movenext 就可以 一直输出啦。
这个思路够清晰了吧,我这久也是在研究ASP。
共勉,加油~!
set conn=server.Creatobject("adodb.connetion")
conn.open(“driver=[SQL Server];server=127.0.0.1;database=表名;uid=用户名;pwd=密码”)
现在库就连接上啦 然后读数据库的表的内容存在rs里
set rs=Server.Creatobject("adodb.recordset")
rs.open "select * from 表名“,conn,1,1.
最后,输出读出的表内容。
response.write(rs("ID)) 或者response.write(rs("UserID"))什么的,想怎么输出就怎么输出啦.用个循环,然后rs.movenext 就可以 一直输出啦。
这个思路够清晰了吧,我这久也是在研究ASP。
共勉,加油~!
更多追问追答
追问
过程是对的 但是我想用存储过程实现这个过程!
追答
一样的嘛,html画个表单,用submit提交,用request("表单名")赋值给某个参数(x),然后这个参数传递给sql语句 sql=select * from 表名 where id=“&x&" 然后,也是一样的
set rs=Server.Creatobject("adodb.recordset")
rs.open sql,conn,1,1.
你要的查询结果就在rs里面咯。循环输出就完了嘛
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用方法不对,你这样调用是没有返回值的。正确的作法是:
DIM MyComm : Set MyComm = Server.CreateObject("ADODB.Command")
with MyComm
.ActiveConnection = Conn
.CommandText = "addnews"
.CommandType = 4
.Prepared = true
.Parameters.append MyComm.CreateParameter("RETURN",2,4)
.Parameters.append MyComm.CreateParameter("@id",3,2,4,id)
.Parameters.append MyComm.CreateParameter("@oNEWS_Title",200,1,60,Otitle)
.Parameters.append MyComm.CreateParameter("),@oType",3,1,4,ONews_class)
.Parameters.append MyComm.CreateParameter("@oNEWS_Content",200,1,5000,Ocontent)
.Parameters.append MyComm.CreateParameter("@oHot",3,1,4,Ohot)
.Execute
end with
if MyComm(0)=1 then
A_ID=MyComm(1)
B_ID=MD5(A_ID)
sql="UPDATE WK_NEWS Set MD5_NEWS_ID='"&B_ID&"' WHERE News_id="&A_ID
conn.execute(Sql)'这一步其实也可以放到存储过程里面,或者用触发器更简单
end if
Set MyComm = Nothing
另外存储过程里面还要增加一个输出参数,修改如下:
CREATE PROCEDURE addnews
@id int output,
@oNEWS_Title char(60),
@oType int,
@oNEWS_Content ntext,
@oHot int
AS
insert WK_News (NEWS_Title,Type,NEWS_Date,NEWS_Content,Hot) values (@oNEWS_Title,@oType,getdate(),@oNEWS_Content,@oHot)
if @@error <> 0
begin
return -1
end
Select @id=@@identity
return 1
GO
DIM MyComm : Set MyComm = Server.CreateObject("ADODB.Command")
with MyComm
.ActiveConnection = Conn
.CommandText = "addnews"
.CommandType = 4
.Prepared = true
.Parameters.append MyComm.CreateParameter("RETURN",2,4)
.Parameters.append MyComm.CreateParameter("@id",3,2,4,id)
.Parameters.append MyComm.CreateParameter("@oNEWS_Title",200,1,60,Otitle)
.Parameters.append MyComm.CreateParameter("),@oType",3,1,4,ONews_class)
.Parameters.append MyComm.CreateParameter("@oNEWS_Content",200,1,5000,Ocontent)
.Parameters.append MyComm.CreateParameter("@oHot",3,1,4,Ohot)
.Execute
end with
if MyComm(0)=1 then
A_ID=MyComm(1)
B_ID=MD5(A_ID)
sql="UPDATE WK_NEWS Set MD5_NEWS_ID='"&B_ID&"' WHERE News_id="&A_ID
conn.execute(Sql)'这一步其实也可以放到存储过程里面,或者用触发器更简单
end if
Set MyComm = Nothing
另外存储过程里面还要增加一个输出参数,修改如下:
CREATE PROCEDURE addnews
@id int output,
@oNEWS_Title char(60),
@oType int,
@oNEWS_Content ntext,
@oHot int
AS
insert WK_News (NEWS_Title,Type,NEWS_Date,NEWS_Content,Hot) values (@oNEWS_Title,@oType,getdate(),@oNEWS_Content,@oHot)
if @@error <> 0
begin
return -1
end
Select @id=@@identity
return 1
GO
追问
这个是添加一条数据,也没有体现出来调用时怎么读取存储过程返回值@id 啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询