نمایش نتایج 1 تا 19 از 19

نام تاپیک: ارسال اسم جدول به عنوان پارامتر به Sp

  1. #1

    ارسال اسم جدول به عنوان پارامتر به Sp

    ّبا سلام من یک stored Procedure دارم که اسم جدول و یک متغیر به عنوان پارامتر به آن ارسال میکنم به صورت زیر

    ALTER Proc [dbo].[Select_Path_New]
    @table_name varchar(50),
    @Name nvarchar(max)


    as

    Declare @Sql_Code Varchar(300)

    set @Sql_Code = N'SELECT * FROM ' + @table_name + ' WHERE Name = ''' + @Name + ''''

    exec(@Sql_Code)


    sp درست هست و ایجاد میشه و وقتی اسم جدول و متغیر Name را برای آن ارسال میکنم اگه متغیر Name به صورت انگلیسی باشه خروجی درست میدهد ولی اگر متغیر Name به صورت یک رشته حروف فارسی باشد چیزی به عنوان خروجی نمی دهد...
    به نظر دوستان مشکل از کجاست؟

  2. #2
    کاربر دائمی آواتار Elham_gh
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    Tehran
    سن
    48
    پست
    718

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    اسم فارسی باید داخل [] باشد.
    پس شما کلا اسمو بذارین داخل [] که چه انگلیسی, چه فارسی درست بشه

  3. #3

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    سلام

    مشکله coding است. اگر unicode باشد نباید مشکلی داشته باشید.

  4. #4

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    نقل قول نوشته شده توسط Elham_gh مشاهده تاپیک
    اسم فارسی باید داخل [] باشد.
    پس شما کلا اسمو بذارین داخل [] که چه انگلیسی, چه فارسی درست بشه
    با سلام...
    ممنونم از راه حل شما ولی متاسفانه به جوابی نرسیدم

  5. #5
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    سلام
    این خط را با خط معادلش عوض کنید:

    Set @Sql_Code = N'Select * From '+@table_name+' Where Name=N'+Char(39)+@Name+Char(39)

  6. #6

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    با سلام...کاربر ASKaffash ...ممنونم از پاسخ شما ....ولی متاسفانه باز هم مشکل حل نشد...

  7. #7
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    سلام
    حرف ی که درون رشته Name وجود ندارد ؟ بنظرم دستور ارسالی را نیز قرار دهید

  8. #8

  9. #9

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    نقل قول نوشته شده توسط BlackDal مشاهده تاپیک
    Declare @Sql_Code nvarchar(300) 
    با سلام ..ممنونم که توجه نشان دادید و پاسخ ارسال کردید.
    ولی متاسفانه باز هم درست نشد...
    و مشکل از حرف ی هم نیست..چک کردم...

  10. #10

  11. #11

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    نقل قول نوشته شده توسط BlackDal مشاهده تاپیک
    من فراموش کردم بگم، اما امیدوارم شما @table_name را هم تبدیل به nvarchar کرده باشید.
    با سلام..@table_name را هم nvarchar کرده ام ولی باز هم جواب نگرفتم..

  12. #12

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    لطفاً این کد را امتحان کرده و در صورت دریافت خطا، پیغام مربوطه را اینجا بنویسید.

    ALTER Proc [dbo].[Select_Path_New]
    @Table_Name nvarchar(50),
    @Name nvarchar(max)
    AS

    DECLARE @Sql_Code nvarchar(300)

    SET @Sql_Code = N'SELECT * FROM [' + Table_Name + '] WHERE Name = ''' + @Name + ''''

    EXEC(@Sql_Code)

  13. #13

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    نقل قول نوشته شده توسط BlackDal مشاهده تاپیک
    لطفاً این کد را امتحان کرده و در صورت دریافت خطا، پیغام مربوطه را اینجا بنویسید.

    ALTER Proc [dbo].[Select_Path_New]
    @Table_Name nvarchar(50),
    @Name nvarchar(max)
    AS

    DECLARE @Sql_Code nvarchar(300)

    SET @Sql_Code = N'SELECT * FROM [' + Table_Name + '] WHERE Name = ''' + @Name + ''''

    EXEC(@Sql_Code)
    با سلام..ممنونم که راهنمایی میکنید...
    فکر کنم منظورتون از Table_Name که آورده اید Table_Name@ باشد...
    در هر دو صورت پیغام خطا می دهد

    اگر در دستور select , من Table_Name را بنویسم پیغام خطای
    Invalid column name 'Table_Name'.

    را می دهد.

    و اگر در دستور Select , من Table_Name@ را بنویسم Stored Procedure ایجاد می شود.
    ولی در هنگام اجرای آن خطای
    Incorrect syntax near '='.

    می دهد.

  14. #14

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    با سلام..ممنونم که راهنمایی میکنید...
    فکر کنم منظورتون از Table_Name که آورده اید Table_Name@ باشد...
    بله منظورم همان بود.

    در Tablle_Name به جای ستون Name از نام دیگری استفاده کنید. Name یک کلمه کلیدی در Sql است.

  15. #15

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    نقل قول نوشته شده توسط BlackDal مشاهده تاپیک
    بله منظورم همان بود.

    در Tablle_Name به جای ستون Name از نام دیگری استفاده کنید. Name یک کلمه کلیدی در Sql است.
    با سلام..ممنونم از راهنماییتون....
    ولی متاسفانه به جواب نرسید

  16. #16
    کاربر دائمی آواتار adinochestva
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    jre
    پست
    460

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    این را امتحان کنید :

    alter Proc [dbo].[Select_Path_New]
    @Table_Name nvarchar(50),
    @Name nvarchar(200)
    AS

    DECLARE @Sql_Code nvarchar(300)

    SET @Sql_Code = N'SELECT * FROM [' + @Table_Name + '] WHERE Name = ' + @Name

    EXEC(@Sql_Code)

  17. #17

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    نقل قول نوشته شده توسط adinochestva مشاهده تاپیک
    این را امتحان کنید :

    alter Proc [dbo].[Select_Path_New]
    @Table_Name nvarchar(50),
    @Name nvarchar(200)
    AS

    DECLARE @Sql_Code nvarchar(300)

    SET @Sql_Code = N'SELECT * FROM [' + @Table_Name + '] WHERE Name = ' + @Name

    EXEC(@Sql_Code)
    با سلام....ممنونم از توجه شما ..بازهم به جواب نرسید......

  18. #18

  19. #19

    نقل قول: ارسال اسم جدول به عنوان پارامتر به Sp

    باسلام....و ممنون از توجه شما دوستان
    من دو کد زیر را چک کردم و هنوز به جواب نریسده ام


    ALTER Proc [dbo].[Select_Path_New]
    @Table_Name nvarchar(50),
    @Name nvarchar(200)
    AS

    DECLARE @Sql_Code nvarchar(300)

    SET @Sql_Code = N'SELECT * FROM [' + @Table_Name + '] WHERE Name= ''' + @Name + ''''

    EXEC(@Sql_Code)


    که این کد در هنگام اجرا خطایی نمی گیرد ولی چیزی هم به عنوان خروجی بر نمی گرداند

    و همچنین کد زیر

    ALTER Proc [dbo].[Select_Path_New]
    @Table_Name nvarchar(50),
    @Name nvarchar(200)
    AS

    DECLARE @Sql_Code nvarchar(300)
    SET @Sql_Code = N'SELECT * FROM [' + @Table_Name + '] WHERE Name= ' + @Name

    EXEC(@Sql_Code)


    که این کد در هنگام اجرا یک خطا میگیرد
    البته من در هنگام اجرا ورودی
    @Name = N'تست'
    قرار دادم که این خطا را بر گرداند

    Invalid column name 'تست'.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •