منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : [تم الحل]خبراء sqlserver
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
هل يوجد في برمجة sql متغيرات تحتفظ بالقيمة حتى نهاية العملية (مثل الفجوال ستديو )

الفكرة اني بعمل رصيد تراكمي ومحتاج متغير وسيط بين اثنين من الباراميترز


PHP كود :
ALTER function mm(@BB FLOAT,@VV FLOAT)
returns FLOAT
begin
 
DECLARE @CC FLOAT
SET 
@CC= @CC+ @BB- @VV
RETURN @CC
end 


كل الى عاوزه هو DECLARE @CC FLOAT تحتفظ بقيمتها 
ولانها بشكل ده بتسلم نفس القيمة ثابته من اول عملية الى الاخر نفس القيمة

لزيادة المعرفة 
صورة الجدول
[attachment=17031]

وده ال query الى بستدعي به function
[attachment=17032]
طبعا النتائج كما في الصور العمود الجديد في الجدول null 
لان cc@ فارغ ولو اعطيته رقما حيبقى ثابت في كل العمليات
السلام عليكم ورحمة الله وبركاته
حياكم الله و بياكم و جعل الجنة مثوانا ومثواكم
ان شاء الله المسألة بسيطة هو إعطائه قيمة
كود :
ALTER function mm(@BB FLOAT,@VV FLOAT)
returns FLOAT
begin
DECLARE @CC FLOAT=100
SET @CC= @CC+ @BB- @VV
RETURN @CC
end
جرب الكود و رد علي
تسلم حياك الله وايكم جميعا 
انا جوبت عليك من زمان
بارك الله فيك
جربت من قبل اعطاءه رقم كما قلت اثناء طرحي للموضوع انه هيثبته مع كل عملية
بمعنى الرصيد التراكمي بياخد اخر قيمة اتحط فيه ويكمل على الى بعدها
يعني متغير 
هو بشكل ده هيضيف 100 ثابتة مع كل صف او كل عملية
في الفجوال لما بتعرف متغير رقمي وتحب تجمع رقم 
يفضل ياخد اخر قيمة ويجمع علها وهكذا الى ان ينتهي الاجراء ثم يفقد قيمتة 
انا عاوز زي كده بالضبط شاهدت فديوهات كثيرة مفيش امل
اللهم صل وسلم وبارك على اشرف الخلق سيدنا ونبينا محمد
اللهم صل وسلم وبارك على اشرف الخلق سيدنا ونبينا محمد
اللهم صل وسلم وبارك على اشرف الخلق سيدنا ونبينا محمد
سلام عليكم

شكرا لكم انا وجدت الحل بطريقة اخرى 
ولمن اراد ان يستفيد 
PHP كود :
alter FUNCTION Balance()
RETURNS TABLE 
AS
RETURN (
    
WITH CTE AS (
        
SELECT
             T
.M_T,
             
T.d_t,
             (
ROW_NUMBER() OVER (PARTITION BY T.name_t ORDER BY T.date_t))  AS RowNo 
        FROM tb1 
AS 
        
)
    
SELECT 
             c
.m_t,
             
c.d_t,
         (
SELECT SUM(ISNULL(C1.m_t,0) - ISNULL(C1.d_t,0)) FROM CTE C1 WHERE C1.RowNo <= C.RowNoBalance 
      FROM CTE 
AS