رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از stored procedure
#1
سلام دوستان عزیزم خسته نباشید
من میخوام که توی codeigniter از Stored Procedure استفاده کنم، راستش خیلی جستجو کردم اما مشکلم حل نشد
در ضمن من از Codeigniter 3.1 استفاده می کنم و از Microsoft SQL Server 2012 و از درایور sqlsrv

کد:
alter PROCEDURE [dbo].[count_message]
        @username smallint
 
    
AS    SET NOCOUNT ON;

return isnull((select count(*) from dbo.sd_message where ms_user=1 or ms_user=@username),0)
پاسخ
تشکر شده توسط:
#2
ببینید اصولا اجرای یک دستور sql حالا DBMS آن میخواهد mysql باشد و یا ms sql فرقی نمی کند و شما باید به دنبال این باشید که درواقع چگونه من یک دستور sql را اجرا کنم؟
حال با رسیدن به این سوال راحت میتوان به جواب زیر دست یافت.


$this->db->call_function('test_proc');
یا
$this->db->query("call test_proc()");



http://stackoverflow.com/a/18741337/5220303
https://codeigniter.com/user_guide/datab...eries.html
پاسخ
تشکر شده توسط:
#3
سلام 
ممنونم اما این کار نمیکنه اینارو خودم قبلا تست کرده بودم

من میخوام که مقدار برگردونه
پاسخ
تشکر شده توسط:
#4
کد زیر را هم بررسی کنید. اگر خطا داد اینجا قرار دهید.
$result = $this->db->query("PROCEDURE_NAME {$param_1}, {$param_2}")->result_array();
http://stackoverflow.com/questions/29450...sql-server
پاسخ
تشکر شده توسط:
#5
(17-12-1395، 11:46 ق.ظ)ابوالفضل زیارت بان نوشته: کد زیر را هم بررسی کنید. اگر خطا داد اینجا قرار دهید.
$result = $this->db->query("PROCEDURE_NAME {$param_1}, {$param_2}")->result_array();
http://stackoverflow.com/questions/29450...sql-server

هیچ مقداری بر نمیگردونه
پاسخ
تشکر شده توسط:
#6
خوب طبیعتا چیزی بر نمیگرداند.
من تا جایی که یادمه کلمه کلیدی Retrun در Store Procedure معنا ندارد از اینرو برای خروجی گرفتن یا شما باید از دستور select استفاده کنید و یا باید یک نوع پارامتر از نوع خروجی تعریف کنید که این نوع پارامتر خروجی صرفا برای استفاده بعد از فراخوانی SP است و در هر صورت شما باید با دستور select خروجی داشته باشید.

کد:
alter PROCEDURE [dbo].[count_message]
@username smallint
as
Begin
SET NOCOUNT ON
select isnull((select count(*) from dbo.sd_message where ms_user=1 or ms_user=@username),0)
end

https://msdn.microsoft.com/en-us/library/ms187926.aspx
https://msdn.microsoft.com/en-us/library/ms189762.aspx
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان