Sql server 2008 如何编写存储过程的插入查询
如何为存储过程编写插入查询 我有两张表和用户订单 当我执行这个查询时,它运行得非常好 例如:-Sql server 2008 如何编写存储过程的插入查询,sql-server-2008,stored-procedures,foreign-key-relationship,Sql Server 2008,Stored Procedures,Foreign Key Relationship,如何为存储过程编写插入查询 我有两张表和用户订单 当我执行这个查询时,它运行得非常好 例如:- insert into Orders values((select Users.Uid from Users where Users.Uname = 'asim'), 15) 但当我试图将其转换为存储过程时,我得到了一个错误 create proc insert_Orders_sp @Uname as insert into Orders(Uid, Quantity) val
insert into Orders
values((select Users.Uid from Users where Users.Uname = 'asim'), 15)
但当我试图将其转换为存储过程时,我得到了一个错误
create proc insert_Orders_sp
@Uname
as
insert into Orders(Uid, Quantity)
values((select Users.Uid from Users where Users.Uname = @Uname), 15)
我不明白我在哪里犯的错误
请帮帮我这应该行得通:
create proc insert_Orders_sp
@Uname varchar(20)
as
insert into Orders(Uid, Quantity)
values((select Users.Uid from Users where Users.Uname = @Uname), 15)
但是你说你有语法错误。你是不是想把它作为脚本的一部分来写,而这个脚本也可以做其他事情?create proc语句必须是批处理中的第一条语句
要使其成为批处理中的第一条语句,但同时执行其他操作,可以执行以下操作:
if exists (select name from sys.objects where name = 'insert_Orders_sp')
begin
drop proc insert_Orders_sp
end
go -- Separates the batch
create proc insert_Orders_sp
@Uname varchar(20)
as
insert into Orders(Uid, Quantity)
values((select Users.Uid from Users where Users.Uname = @Uname), 15)
go
无法在IF中包装过程创建脚本。。开始END语句,因为要求create过程是批处理中的第一条语句。有一些变通方法,但它们有点复杂。您缺少SP参数的数据类型
create proc insert_Orders_sp
@Uname varchar(10) -- Missing Datatype
as
insert into Orders(Uid, Quantity)
values((select Users.Uid from Users where Users.Uname = @Uname), 15)
单独运行的insert stmt将始终有效,因为它不使用变量。因此SP和ins stmt是不可比较的。正如@objectNotFound提到的,在存储过程中声明SP的参数时丢失了数据类型。如果声明参数,则必须声明其数据类型,就像您忘记声明数据类型一样:-
CREATE proc insert_Orders_sp @Uname varchar(10) -- Missing Datatype here in brackets 10 is size of datatype
AS INSERT INTO Orders(UID, Quantity) VALUES(
(SELECT Users.Uid
FROM Users
WHERE Users.Uname = @Uname), 15)
那么,你到底犯了什么错误?我们看不懂你的屏幕,也看不懂你的心思——你必须告诉我们!Msg 156,15级,状态1,过程插入\u命令\u sp,第4行关键字“开始”附近语法不正确。Msg 137,级别15,状态2,过程插入\u Orders\u sp,第6行必须声明标量变量@Uname。除显示内容外,屏幕上还有其他内容。您发布的脚本中没有BEGIN。我要转换:insert into Orders VALUES SELECT Users.Uid from Users where.Uname='asim',15到存储过程中,在存储过程中我要通过选择用户名获取用户id。&我不知道怎么做。一般来说,它工作正常,但当我试图将其转换为存储过程时,它不工作。