我正在MS SQL Server 2008中创建存储过程。
在我的SP中,在插入语句之后,插入的该行的标识值将为
生成。我在另一个插入语句中使用它。
@SID int
insert into table1(SNAME) values('Sname')
set @SID=SCOPE_IDENTITY()
insert into table2(SID)values(@SID)
这里,我的疑问是,是否需要在C#代码中添加@SID作为参数。
如何声明一个不期望任何参数的变量?因为它获得了值
来自SP本身的..
请帮忙
答案 0 :(得分:2)
<强> Declaring variable in SQL Server 强>
Declare @SID int --Declaring variable in SQL Server
insert into table1(SNAME) values('Sname')
set @SID=SCOPE_IDENTITY()
insert into table2(SID)values(@SID)
答案 1 :(得分:2)
从
更改sql@SID int
到
DECLARE @SID int
查看DECLARE @local_variable (Transact-SQL)
变量在批处理或过程的主体中声明 DECLARE语句并使用SET或者分配值 SELECT语句。可以使用此语句声明游标变量 并与其他与游标相关的语句一起使用。声明后,全部 变量初始化为NULL,除非作为一部分提供了值 声明。
答案 2 :(得分:2)
我的疑问是,是否需要在C#代码中添加@SID
问题是do you want this identity to be returned as an output parameter
给你的班级?
如果是,则必须将其作为输出参数传递。像
@SID INT OUTPUT -- as stored procedure parameter
如果否,则将在本地声明存储过程中本地所需的所有变量。你只需要改变
@SID int
要
DECLARE @SID int
答案 3 :(得分:1)
CREATE PROCEDURE SPNAME
@PARAM1 INT,
@PARAM2 VARCHAR(10),
.
.
AS
BEGIN
DECLARE @SID AS int
insert into table1(SNAME) values('Sname')
set @SID=SCOPE_IDENTITY()
insert into table2(SID)values(@SID)
END
答案 4 :(得分:1)
对于Oracle和DB2声明变量是,
CREATE OR REPLACE PROCEDURE Proc1()
IS
Declare
myName in varchar;
STMT VARCHAR(4000);
BEGIN
Select fname into myName from student where fname='x'; // is returning unique value
END;