2

我正在 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本身..

请帮忙

4

5 回答 5

2

在 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)
于 2013-08-14T09:53:01.267 回答
2

将sql从

@SID int

DECLARE @SID int

看看DECLARE @local_variable (Transact-SQL)

变量在批处理或过程的主体中使用 DECLARE 语句声明,并通过使用 SET 或 SELECT 语句分配值。游标变量可以用这个语句声明并与其他游标相关的语句一起使用。声明后,所有变量都初始化为 NULL,除非在声明中提供了值。

于 2013-08-14T09:53:07.000 回答
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
于 2013-08-14T10:01:01.003 回答
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
于 2013-08-14T09:54:49.700 回答
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;
于 2014-12-24T06:32:34.703 回答