如何将变量声明为存储过程

时间:2013-08-14 09:51:27

标签: c# sql sql-server

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

..

请帮忙

5 个答案:

答案 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;
相关问题