您好我是创建存储过程的新手可以帮助我如何做到这一点。 错误: 关键字“AS”附近的语法不正确。 必须声明标量变量@Serial。
CREATE PROCEDURE sp_SIU
-- Add the parameters for the stored procedure here
@Serial varchar(50),
@Part varchar(50),
@Status varchar(50),
AS
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
/*SET NOCOUNT ON;*/
-- Insert statements for procedure here
--where in my form if i enter serial number it will show select values
Select SerialNumber,PartNumber,Status from Table1 where SerialNUmber = @Serial
--Then if is correct it will Update Status on combobox
Update Table1 SET
Status=@Status
where SerialNumber=@SerialNumber
--then Insert Serial Number,Parnumber to Table 2
DECLARE @Count int
select @Count = Count(SerialNumber) from Table1 WHERE SerialNumber = @Serial
IF @Count = 0
BEGIN
INSERT INTO Table2 (SerialNumber,PArtNumber)
VALUES
(@Serial, @Part)
END
RETURN @Count
RETURN
编辑:已移动更新的信息已发布为问题
的答案哎呀我的帖子不是那种小姐。 可以在一个存储过程中连接这个3 sql字符串吗?
方案:
{
我在表格中要做的是,我将使用选择的sql输入序列号txtserial.text
,它将在serialnumber,partnumber
和{{1}上显示status
和lblserial.text,lblpartnumber.text
}}。
我会比较:
lblstatus.text
我的错误处理程序。
txtserial.text == lblserial.text
txtpartnumber.text == lblpartnumber.text
然后如果他们是平等的话: 如果序列和部分正确,我将从cbostatus.text更新我的状态,然后使用sql upate。
{
Select SerialNumber,PartNumber,Status from Table1 where SerialNUmber = @Serial
}
这是什么东西。
“)
答案 0 :(得分:7)
你这里有一个流氓逗号
@Status varchar(50),
AS
@Serial
和@SerialNumber
之间的名称是2个不同的参数吗?
这条线的目的是什么?
Select SerialNumber,PartNumber,Status from Table1 where SerialNUmber = @Serial
目前它只会将3列结果集发回给调用应用程序。这是它打算做什么(它似乎不符合以下评论,这似乎意味着它意味着某种检查)?
答案 1 :(得分:1)
是的,您可以在一个存储过程中执行3个SQL语句。您可能希望在sproc中声明一些局部变量来保存中间结果,即
CREATE PROCEDURE BLAHBLAH
@SerialNumber VarChar(50)
AS
BEGIN
DECLARE @partnumber varchar(50);
SELECT @partnumber = partnumber FROM Table WHERE serialnumber = @SerialNumber;
...
SELECT @partnumber; --- return as recordset
RETURN @partnumber; --- return as return value
END
然后你可以稍后插入@partnumber,测试@partnumber,返回@partnumber等。我不太明白你想做什么;好像你最想查找基于序列号的部件号,但是你也希望做一些唯一性测试。如果你能更多地澄清目标,那将会有所帮助。
我建议您暂时忽略用户界面的内容。给自己写一些很好的干净存储过程来封装事务,即使从两个不同的连接同时触发,它也会做正确的事情。在SQL环境中让所有工作都令您满意。然后返回用户界面。
答案 2 :(得分:0)
哎呀我的帖子不是那种小姐。
可以在一个存储过程中加入这个3 sql字符串吗?
情景:
我在表单中要做的是,我将使用select sql输入序列号到txtserial.text,它将在lblserial.text,lblpartnumber.text和lblstatus.text上显示serialnumber,partnumber和status。
我会比较:
我的错误处理程序。
{
Select SerialNumber,PartNumber,Status from Table1 where SerialNUmber = @Serial
}
然后,如果它们相等,那么:
如果序列和部分正确,我将从cbostatus.text更新我的状态,然后使用sql update。
{
Update Table1
SET Status = @Status,
Modifiedby = @username,
DateModified = @Date
where SerialNumber = @Serial
}
然后插入serialnumber,使用sql insert到另一个表。
{
INSERT INTO Table2(SerialNumber, DateCreated, Createdby)
VALUES(@Serial, @date, @username)
}
像这样的东西。