请帮我看看是怎么回事
发表在ASP.NET图书答疑 2008-12-05
是否精华
版块置顶:
您好:《ASP.NET从入门到精通》中第九章的9.3.1使用Command对象查询数据中的9.1示例里的 sql 语句“select * from tb_Student where Name=@Name”中,“@Name”是什么意思?我用的是SQL Server2000,在查询分析器中使用“select * from tb_Student where Name=@Name”,为什么提示我“@Name”必须声明变量?
分享到:
精彩评论 4
小傻瓜
学分:0 LV1
2008-12-06
沙发
是存储过程
    存储过程是一组预编译的SQL语句,是数据库的重要组成部分。
    存储过程的用途:1)存储过程用以表达复杂的业务逻辑2)存储过程由于其执行速度较快,安全性较高,得到广泛的应用。
    存储过储优点:     1.允许模块化程序设计     2.允许更快执行     3.减少网络流量     4.可作为安全机制使用
    
小傻瓜
学分:0 LV1
2008-12-06
板凳
 存储过程的语法格式为:
    Create  Procedure   存储过程名称
    As 
    Begin
        T-SQL语句
    end
  例如:
          Create  Procedure  P_BooksCount
as
begin
    Select count(*) from bookinfo
end 

    
执行存储过程:
Execute  存储过程名称

Exec   存储过程名称
例如:
   
Exec   P_BookPriceDown

创建带参数的存储过程格式:
  Create Proc 存储过程名 
   (    @变量名1  变量类型1,
       @变量名2  变量类型2,
     … )
   As 
     Begin
           T-SQL语句
     End

注:一个存储过程可有多达2100参数,且每个参数都有名称、数据类型、方向和默认值。

1.名称:唯一、以单个@开头,遵循标识符命名规则。
赋值:存储过程有三个参数:@a,@b,@c
Execute my_proc @b=2,@a=1,@c=3
或: Execute my_proc  1,2,3

2.数据类型:参数要指定数据类型

小傻瓜
学分:0 LV1
2008-12-06
地板
 这位朋友你明白吗,@Name就是定义的参数 ,你的问题出在没有定义参数@Name 就使用这个参数,是不行的。
  
  为了详细说明将举个例子说明:

--创建数据库Books
create database books
go
use books
go
--创建BookInfo表:
create table bookinfo
(
Bookid  char(4),
BookName  varchar(50),
BookKind  varchar(10),
Bookbuymoney  money,
BookBuyTime  datetime,
Bookstate  bit
)
go
 --向表中输入数据
insert into bookinfo values('1001','图书1','文学',25,'02-02-02',0)
insert into bookinfo values('1002','图书2','科普',20,'04-02-02',1)
insert into bookinfo values('1003','图书3','计算机',45,'02-03-04',0)
insert into bookinfo values('1004','图书4','军事',48,'05-05-04',0)   
select * from bookinfo

go
/*1.创建存储过程P_BookCount
  存储过程的功能是:查询图书的数量
  答案:*/

Create procedure p_bookCount
as
select count(*) as bookCount from bookinfo
/*2.执行存储过程 p_bookCount*/
 答案:*/
exec p_bookCount

/*3.创建存储过程P_BookPrice,存储过程带参数bname varchar(20)
  存储过程的功能是:根据图书的名称查询图书的数量

  答案:*/

create procedure p_bookprice(@bname varchar(20))
as
select  bookbuymoney  from bookinfo
where bookname=@bname

/*4.执行存储过程p_bookprice
  要求(1)查询图书"图书1"的价格
      (2)查询图书"图书2"的价格
  答案: */
      exec p_bookprice  '图书1'
      exec p_bookprice  '图书2'

/*5.创建存储过程p_updatebookprice, 存储过程带参数@bname varchar(20),@bprice money
  存储过程的功能:根据图书的编号更新图书的价格

  答案: */

create procedure p_updatebookprice(@bname varchar(20),@bprice money)
as
   update bookinfo set bookbuymoney=@bprice
   where bookname=@bname
   
mrfdw
学分:0 LV1
2008-12-06
4L
这里非常非常感谢小傻瓜这个朋友,谢谢你支持我们的工作!
可以看出你的SQL语言知识非常地扎实,相信你也是个ASP.NET爱好者,
希望你能一直学习ASP.NET,我们有什么ASP.NET不会的地方还要向你请教!
相信ASP.NET也是你最爱的,喜爱的就要一直学习呀!
首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照