Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Truyền Procedure vào IN trong SELECT * FROM ABC WHERE abc IN('1','2','3','4')

  1. #1
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Mặc định Truyền Procedure vào IN trong SELECT * FROM ABC WHERE abc IN('1','2','3','4')

    Mình có câu lệnh
    SELECT * FROM ABC WHERE abc IN('1','2','3','4')
    Mình muốn viết Procedure truyền vào cái chuỗi trong IN kia.
    Chuỗi của mình là string truyền vào không chạy, đã thử string.ToCharArray() cũng không được. các bạn giúp mình với!

  2. #2
    Ngày gia nhập
    02 2011
    Bài viết
    36

    Trích dẫn Nguyên bản được gửi bởi hoanganhcuong87 Xem bài viết
    Mình có câu lệnh
    SELECT * FROM ABC WHERE abc IN('1','2','3','4')
    Mình muốn viết Procedure truyền vào cái chuỗi trong IN kia.
    Chuỗi của mình là string truyền vào không chạy, đã thử string.ToCharArray() cũng không được. các bạn giúp mình với!
    SQL Code:
    1. CREATE PROCEDURE sp_ABC
    2.    @param_one nvarchar(1)
    3.    @param_two nvarchar(1)
    4.    @param_three nvarchar(1)
    5.    @param_four nvarchar(1)
    6. AS
    7.    SELECT *
    8.    FROM ABC
    9.    WHERE abc IN(@param_one, @param_two, @param_three , @param_four )
    Trong code C#:
    Visual C# Code:
    1. string storeProcedure = "sp_ABC @param_one = '{0}', @param_two = '{1}', @param_three = '{2}', @param_four = '{3}'";
    2. objCommand.CommandText = string.Format(storeProcedure, value1, value2, value3, value4);
    3. objCommand.ExecuteNonQuery();

    Mình chỉ code ý tưởng, bạn xem tham khảo nhé.

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi vanthuong420 Xem bài viết
    SQL Code:
    1. CREATE PROCEDURE sp_ABC
    2.    @param_one nvarchar(1)
    3.    @param_two nvarchar(1)
    4.    @param_three nvarchar(1)
    5.    @param_four nvarchar(1)
    6. AS
    7.    SELECT *
    8.    FROM ABC
    9.    WHERE abc IN(@param_one, @param_two, @param_three , @param_four )
    Trong code C#:
    Visual C# Code:
    1. string storeProcedure = "sp_ABC @param_one = '{0}', @param_two = '{1}', @param_three = '{2}', @param_four = '{3}'";
    2. objCommand.CommandText = string.Format(storeProcedure, value1, value2, value3, value4);
    3. objCommand.ExecuteNonQuery();

    Mình chỉ code ý tưởng, bạn xem tham khảo nhé.
    Vấn đề là chuỗi string của mình chưa xác định có bao nhiêu param mà mình chỉ biết là nó ngăn cách nhau bằng dấu " " thôi bạn ahj. Dù sao cũng cảm ơn! ko thấy nút thanks ở đâu cả?

  4. #4
    Ngày gia nhập
    10 2009
    Bài viết
    2

    Mặc định Cách tạo store procedure như sau

    Trích dẫn Nguyên bản được gửi bởi hoanganhcuong87 Xem bài viết
    Mình có câu lệnh
    SELECT * FROM ABC WHERE abc IN('1','2','3','4')
    Mình muốn viết Procedure truyền vào cái chuỗi trong IN kia.
    Chuỗi của mình là string truyền vào không chạy, đã thử string.ToCharArray() cũng không được. các bạn giúp mình với!
    IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[IN_ABC]') AND type in (N'P', N'PC'))
    DROP PROCEDURE [dbo].[IN_ABC]
    GO

    CREATE PROCEDURE [dbo].[IN_ABC]
    @INSTR nvarchar(2000)
    AS
    BEGIN
    declare @SqlString nvarchar(500)
    set @SqlString = N'SELECT * FROM ABC WHERE Id IN('+@INSTR+')'

    EXEC(@SqlString)

    END

    GO

    -parameter bạn truyền vào là ở dạng chuỗi cách nhau bởi dấu "," vd: "1,2,3,4" (hoặc "'a','b','c','d'")
    -Test thử bằng lệnh :
    exec [IN_ABC] '1,2,3,4'

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi dunghp Xem bài viết
    IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[IN_ABC]') AND type in (N'P', N'PC'))
    DROP PROCEDURE [dbo].[IN_ABC]
    GO

    CREATE PROCEDURE [dbo].[IN_ABC]
    @INSTR nvarchar(2000)
    AS
    BEGIN
    declare @SqlString nvarchar(500)
    set @SqlString = N'SELECT * FROM ABC WHERE Id IN('+@INSTR+')'

    EXEC(@SqlString)

    END

    GO

    -parameter bạn truyền vào là ở dạng chuỗi cách nhau bởi dấu "," vd: "1,2,3,4" (hoặc "'a','b','c','d'")
    -Test thử bằng lệnh :
    exec [IN_ABC] '1,2,3,4'
    Cảm ơn nhiều! Còn code trong C# thì sao hả bạn? ( Đây là trong SQL)

  6. #6
    Ngày gia nhập
    12 2011
    Bài viết
    49

    Mặc định Truyền Procedure vào IN trong SELECT * FROM ABC WHERE abc IN('1','2','3','4')

    Code trong c# chỉ là cộng chuỗi thôi mà bác. Dùng exec là sql động, bác vào đây luyện thêm tý tâm pháp http://www.sqlviet.com/blog/sql-dong

Các đề tài tương tự

  1. MS SQL Lỗi Lỗi Select lồng nhau chỉ trả về được 1 giá trị trong store procedure
    Gửi bởi vuthanhdt05 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 0
    Bài viết cuối: 08-03-2013, 02:46 PM
  2. [Store Procedure] Insert vào một trong các bảng có cấu trúc giống nhau với tên bảng là tham số truyền vào!
    Gửi bởi chuoi123 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 9
    Bài viết cuối: 21-11-2012, 02:39 PM
  3. Database Gridview không thể hiển thị 2 bảng từ 2 câu select trong procedure sửa thế nào?
    Gửi bởi vanhung89 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 17
    Bài viết cuối: 01-07-2012, 04:54 PM
  4. MS SQL với C# làm sao để select top trong procedure của sql
    Gửi bởi tinhthanhiepsi9x trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 2
    Bài viết cuối: 12-05-2012, 08:52 AM
  5. Viết Store Procedure thực thi câu lệnh Select
    Gửi bởi SadAngel trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 11-03-2011, 09:06 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn