Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Database & SysAdmin
  3. Database
  4. Passing Arrays to Stored Proc

Passing Arrays to Stored Proc

Scheduled Pinned Locked Moved Database
sharepointdata-structureshelp
2 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    ferronrsmith
    wrote on last edited by
    #1

    I want to pass an array of Id's to a stored proc to be processed, but i keep getting an error saying : Error converting data type varchar to numeric.

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go

    ALTER PROCEDURE [dbo].[sp_getTranfer] @TRANSFER_ID int = null, @COMPANY VARCHAR(5),@FORMTYPE VARCHAR(30), @TRANSFER_IDS VARCHAR(500) = NULL, @SEAL_DATE datetime = NULL AS
    -- Declare variables
    DECLARE @rc Int, @ThisID varchar (10), @Pos int

    IF @SEAL_DATE IS NULL
    BEGIN
    SELECT
    COMPANY,
    FORMTYPE,
    COMPANY_NAME,
    COMPANY_ADDRESS1,
    COMPANY_ADDRESS2,
    IMID,[DESCRIPTION],AMOUNT,AMOUNT_TRANSFER,
    CONSIDERATION,
    TRANSFER_ID,
    [DATE],
    CURR,
    CMF_NAME_1,
    CMF_NAME_2,
    CMF_ADDR_1,
    CMF_ADDR_2,
    CMF_ADDR_3,
    CMF_ADDR_4,
    CMF_POSTAL_CODE,
    Cons_Curr = CASE
    WHEN LTRIM(RTRIM(Cons_Curr)) <> '' THEN Cons_Curr
    ELSE CURR
    END,
    -- Cons_Curr,
    TRANSFERYEAR,
    TRANSFERMONTH,
    TRANSFERDAY,
    dbo.CurrencyToWords(CURR) AS CURR_WORDS,
    ---dbo.CurrencyToWords(Cons_Curr) AS CONNS_CURR_WORDS

    CONS_CURR_WORDS = CASE
    WHEN LTRIM(RTRIM(CONS_CURR)) <> '' THEN dbo.CurrencyToWords(CONS_CURR)
    ELSE dbo.CurrencyToWords(CURR)
    END

    FROM
    VW_TRANSFERS
    WHERE
    TRANSFER_ID= @TRANSFER_ID
    AND
    FORMTYPE= @FORMTYPE
    AND
    COMPANY = @COMPANY
    OR
    TRANSFER_ID IN (@TRANSFER_IDS)
    END

    ELSE
    SELECT
    COMPANY,
    FORMTYPE,
    COMPANY_NAME,
    COMPANY_ADDRESS1,
    COMPANY_ADDRESS2,
    IMID,[DESCRIPTION],AMOUNT,AMOUNT_TRANSFER,
    CONSIDERATION,
    TRANSFER_ID,
    [DATE],
    CURR,
    CMF_NAME_1,
    CMF_NAME_2,
    CMF_ADDR_1,
    CMF_ADDR_2,
    CMF_ADDR_3,
    CMF_ADDR_4,
    CMF_POSTAL_CODE,
    --Cons_Curr,
    Cons_Curr = CASE
    WHEN LTRIM(RTRIM(Cons_Curr)) <> '' THEN Cons_Curr
    ELSE CURR
    END,
    TRANSFERYEAR,
    TRANSFERMONTH,
    TRANSFERDAY,
    dbo.CurrencyToWords(CURR) AS CURR_WORDS,
    ---dbo.CurrencyToWords(Cons_Curr) AS CONNS_CURR_WORDS

    CONS_CURR_WORDS = CASE
    WHEN LTRIM(RTRIM(CONS_CURR)) <> '' THEN dbo.CurrencyToWords(CONS_CURR)
    ELSE dbo.CurrencyToWords(CURR)
    END
    FROM
    VW_TRANSFERS
    WHERE
    FORMTYPE= @FORMTYPE
    AND
    COMPANY = @COMPANY
    AND
    DATE = @SEAL_DATE
    OR
    TRANSFER_ID IN (@TRANSFER_IDS)

    Ferron

    A 1 Reply Last reply
    0
    • F ferronrsmith

      I want to pass an array of Id's to a stored proc to be processed, but i keep getting an error saying : Error converting data type varchar to numeric.

      set ANSI_NULLS ON
      set QUOTED_IDENTIFIER ON
      go

      ALTER PROCEDURE [dbo].[sp_getTranfer] @TRANSFER_ID int = null, @COMPANY VARCHAR(5),@FORMTYPE VARCHAR(30), @TRANSFER_IDS VARCHAR(500) = NULL, @SEAL_DATE datetime = NULL AS
      -- Declare variables
      DECLARE @rc Int, @ThisID varchar (10), @Pos int

      IF @SEAL_DATE IS NULL
      BEGIN
      SELECT
      COMPANY,
      FORMTYPE,
      COMPANY_NAME,
      COMPANY_ADDRESS1,
      COMPANY_ADDRESS2,
      IMID,[DESCRIPTION],AMOUNT,AMOUNT_TRANSFER,
      CONSIDERATION,
      TRANSFER_ID,
      [DATE],
      CURR,
      CMF_NAME_1,
      CMF_NAME_2,
      CMF_ADDR_1,
      CMF_ADDR_2,
      CMF_ADDR_3,
      CMF_ADDR_4,
      CMF_POSTAL_CODE,
      Cons_Curr = CASE
      WHEN LTRIM(RTRIM(Cons_Curr)) <> '' THEN Cons_Curr
      ELSE CURR
      END,
      -- Cons_Curr,
      TRANSFERYEAR,
      TRANSFERMONTH,
      TRANSFERDAY,
      dbo.CurrencyToWords(CURR) AS CURR_WORDS,
      ---dbo.CurrencyToWords(Cons_Curr) AS CONNS_CURR_WORDS

      CONS_CURR_WORDS = CASE
      WHEN LTRIM(RTRIM(CONS_CURR)) <> '' THEN dbo.CurrencyToWords(CONS_CURR)
      ELSE dbo.CurrencyToWords(CURR)
      END

      FROM
      VW_TRANSFERS
      WHERE
      TRANSFER_ID= @TRANSFER_ID
      AND
      FORMTYPE= @FORMTYPE
      AND
      COMPANY = @COMPANY
      OR
      TRANSFER_ID IN (@TRANSFER_IDS)
      END

      ELSE
      SELECT
      COMPANY,
      FORMTYPE,
      COMPANY_NAME,
      COMPANY_ADDRESS1,
      COMPANY_ADDRESS2,
      IMID,[DESCRIPTION],AMOUNT,AMOUNT_TRANSFER,
      CONSIDERATION,
      TRANSFER_ID,
      [DATE],
      CURR,
      CMF_NAME_1,
      CMF_NAME_2,
      CMF_ADDR_1,
      CMF_ADDR_2,
      CMF_ADDR_3,
      CMF_ADDR_4,
      CMF_POSTAL_CODE,
      --Cons_Curr,
      Cons_Curr = CASE
      WHEN LTRIM(RTRIM(Cons_Curr)) <> '' THEN Cons_Curr
      ELSE CURR
      END,
      TRANSFERYEAR,
      TRANSFERMONTH,
      TRANSFERDAY,
      dbo.CurrencyToWords(CURR) AS CURR_WORDS,
      ---dbo.CurrencyToWords(Cons_Curr) AS CONNS_CURR_WORDS

      CONS_CURR_WORDS = CASE
      WHEN LTRIM(RTRIM(CONS_CURR)) <> '' THEN dbo.CurrencyToWords(CONS_CURR)
      ELSE dbo.CurrencyToWords(CURR)
      END
      FROM
      VW_TRANSFERS
      WHERE
      FORMTYPE= @FORMTYPE
      AND
      COMPANY = @COMPANY
      AND
      DATE = @SEAL_DATE
      OR
      TRANSFER_ID IN (@TRANSFER_IDS)

      Ferron

      A Offline
      A Offline
      Ashfield
      wrote on last edited by
      #2

      Your problem is that SQL Server does not allow an in clause to be a variable:

      TRANSFER_ID IN (@TRANSFER_IDS)

      for example will not work. What you need to do is split the variable into a table variable and join to that. Google has loads of examples

      Bob Ashfield Consultants Ltd Proud to be a 2009 Code Project MVP

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups