相关疑难解决方法(0)

如何将数组传递给SQL Server存储过程

如何将数组传递给SQL Server存储过程?

例如,我有一份员工清单.我想将此列表用作表,并将其与另一个表连接.但是员工列表应该作为参数从C#传递.

c# t-sql sql-server stored-procedures

275
推荐指数
10
解决办法
35万
查看次数

是否可以将ID的集合作为ADO.NET SQL参数发送?

例如.我可以写这样的代码:

public void InactiveCustomers(IEnumerable<Guid> customerIDs)
{
    //...
    myAdoCommand.CommandText =
        "UPDATE Customer SET Active = 0 WHERE CustomerID in (@CustomerIDs)";
    myAdoCommand.Parameters["@CustomerIDs"].Value = customerIDs;
    //...
}
Run Code Online (Sandbox Code Playgroud)

我知道的唯一方法是加入我的IEnumerable,然后使用字符串连接来构建我的SQL字符串.

.net sql ado.net

20
推荐指数
2
解决办法
7324
查看次数

在SQL中将字符串列表转换为Int列表

我的存储过程中有一个nvarchar(MAX),它包含int值列表,我这样做是因为无法将int列表传递给我的存储过程,但是,现在我遇到问题,因为我的数据类型是int我想比较字符串列表.有没有办法可以做同样的事情?

---myquerry----where status in (@statuslist)
Run Code Online (Sandbox Code Playgroud)

但是statuslist现在包含字符串值而不是int,那么如何将它们转换为INT?

更新:

USE [Database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [dbo].[SP]
(
@FromDate datetime = 0,
@ToDate datetime = 0,
@ID int=0,
@List nvarchar(MAX) //This is the List which has string ids//
)
Run Code Online (Sandbox Code Playgroud)

AS SET FMTONLY OFF; DECLARE @sql nvarchar(MAX),@ paramlist nvarchar(MAX)

SET @sql    = 'SELECT ------ and Code in(@xList)
  and -------------'
SELECT @paramlist = '@xFromDate datetime,@xToDate datetime,@xId int,@xList nvarchar(MAX)'

EXEC sp_executesql @sql, @paramlist, 
@xFromDate = @FromDate ,@xToDate=@ToDate,@xId=@ID,@xList=@List …
Run Code Online (Sandbox Code Playgroud)

sql string stored-procedures casting list

8
推荐指数
2
解决办法
5万
查看次数

如何使用存储过程SQL SERVER 2008 R2(mssql)插入PHP数组值

我有这个数组

$REV = Array
(
    0 => 240,
    1 => 241,
    2 => 242,
    3 => 243,
    4 => 249
);
Run Code Online (Sandbox Code Playgroud)

我现在使用此代码插入,将每个数组的元素存储在$ id,$ userID,Type和Date的行中

if (!empty($REV)) {
    foreach ($REV as $val_rev) {
        $values_rev[] = "('" . $ID . "','REV','" . $val_rev . "','" . $IDUSER . "',GETDATE())";
    }
    $values_rev_insert = implode(',', $values_rev);

    $query_rev = "insert into dbo.CCLine (ID,CCType,CSID,IdUSer,DateCreated)values" . $values_rev_insert;
    mssql_query($query_rev);
}
Run Code Online (Sandbox Code Playgroud)

但我想要的是可以使用这个存储过程,但我不知道如何使用sp一次插入:

$stmt = mssql_init('sp_insertRev');
mssql_bind($stmt, '@ID', $ID, SQLINT4);
mssql_bind($stmt, '@CCType', 'REV', SQLVARCHAR);
Run Code Online (Sandbox Code Playgroud)

该阵列在这里不起作用

mssql_bind($stmt, '@CSID', $val_rev, SQLINT4);//An example …
Run Code Online (Sandbox Code Playgroud)

php sql-server arrays stored-procedures sql-server-2008-r2

7
推荐指数
1
解决办法
4759
查看次数

如何将参数列表传递给存储过程并在SQL Server中执行批量插入

我正在使用Spring JDBCTemplate连接到SQL Server.

我有一个需要插入SQL Server表的对象列表.

我做的是以下内容:

public void batchInsert(final List<Bean> list) {

    final String sql = "insert into temp"
            + "(id, name, amount, location, time, price) "
            + " values (?, ?, ?, ?, ?, ?)";

    getJdbcTemplate().batchUpdate(sql, new BatchPreparedStatementSetter() {

        @Override
        public void setValues(PreparedStatement ps, int i) throws SQLException {
            Bean vo = list.get(i);
            ps.setString(1, vo.getId());
            ps.setString(2, vo.getName());
            ps.setDouble(3, vo.getAmount());
            ps.setString(4, vo.getLocation());
            ps.setString(5, vo.getTime());
            ps.setDouble(6, vo.getPrice());
        }

        @Override
        public int getBatchSize() {
            return list.size();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

但是现在,我想将参数List<Bean> list …

sql sql-server spring stored-procedures jdbc

6
推荐指数
1
解决办法
2558
查看次数

将List <string>传递给存储过程

我有一个字符串列表,我需要检查列表中的任何值是否包含在数据库table.if exists中返回现有值的数据集.

public DataSet CheckDocumentNumber(List<string> DocNumber)
{
   DataSet DocNum = new DataSet();
   SqlTransaction transaction = DALDBConnection.SqlConnection.BeginTransaction();

   try
   {
      string[] taleNames = new string[1];
      taleNames[0] = "DocNum";
      SqlParameter[] param = new SqlParameter[1];
      param[0] = new SqlParameter("@DocNumber", DocNumber);

      SqlHelper.FillDataset(transaction, CommandType.StoredProcedure, "spCheckDocNumber", DocNum, taleNames, param);
      transaction.Commit();
   }
   catch (Exception e)
   {
      transaction.Rollback();
   }

   return DocNum;
}
Run Code Online (Sandbox Code Playgroud)

我的存储过程是

CREATE PROCEDURE spCheckDocNumber
    @DocNumber VARCHAR(MAX)
AS
BEGIN
   SELECT * FROM tblDocumentHeader WHERE DocumentNumber = @DocNumber
END
Run Code Online (Sandbox Code Playgroud)

我需要知道如何将列表传递给存储过程以及如何在过程中检查列表.请帮助

sql-server asp.net stored-procedures

3
推荐指数
1
解决办法
5976
查看次数

"数组参数"TSQL

我有一个带有呼叫数据记录的表,每个呼叫有一个呼叫数据,其中一个字段是我们在查询数据库时使用的CallerId.

我们使用以下TSQL来模拟一个数组参数,这是要走的路还是我们要离开?

ALTER PROCEDURE [dbo].[spStudio_Get_Smdr]
    @beginTime INT,
    @endTime INT,
    @subscribers VARCHAR(MAX) = NULL,
    @exchanges VARCHAR(MAX) = '1:',
    @beginDateValue int, 
    @endDateValue int
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @exch TABLE(Item Varchar(50))   
    INSERT INTO @exch
    SELECT Item FROM [SplitDelimitedVarChar] (@exchanges, '|') ORDER BY Item


    DECLARE @subs TABLE(Item Varchar(19))
    INSERT INTO @subs
    SELECT Item FROM [SplitDelimitedVarChar] (@subscribers, '|') ORDER BY Item

    SELECT
      ,[Level]
      ,[Timestamp]
      ,[EndYear]
      ,[EndDate]
      ,[EndTime]
      ,[CallingNumber]
      ,[DialledNumber]
      ..more fields between
      ,[DateValue]
      ,[TimeValue]
  FROM [SmdrFormat] AS S
    WHERE
        (S.[DateValue] BETWEEN @beginDateValue AND …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server-2005

2
推荐指数
1
解决办法
8383
查看次数

存储过程中EXISTS子句的参数

我有一张桌子DEPT,里面有两列 - ID, NAME.

将使用DEPT表中的ID显示搜索表单,用户可以选择任意数量的ID并提交表单,以获取相关信息NAMEs.

澄清/输入:

  • 我不想构建动态查询 - 它不可管理.
  • 我更喜欢使用表值参数的存储过程

还有其他解决办法吗?

注意:
此示例很简单,有1个表 - 在现实生活中,我必须处理超过6个表!

谢谢你的任何建议

c# sql-server stored-procedures

1
推荐指数
1
解决办法
342
查看次数