الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أريد الاضافة ولكن بطريقة معينة

مغلق
بدأه صلاح الثبيتي في 6 يونيو 2006 · 5 رد · 519 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :)

عندي كود Stored Prod. ولكن أبغاه يشتغل بنفس الطريقة اللي مكتوبة تحت:

CREATE PROCEDURE InsertLo
(
	@LDesc varchar(50),
	@LDate datetime,
	@LNumber int,
	@ReqId int
)
AS
INSERT INTO TLo (LDesc, LDate, LNumber, ReqId)
VALUES (@LDesc, @LDate,
	(SELECT COUNT((*)+1) FROM dbo.TLo
	WHERE ReqId = @ReqId), @ReqId))

SELECT LId = @@Identity

المشكله أن الخطأ من جملة الـ SELECT المكتوبة بنص جملة الـ INSERT والهدف منها زيادة قيمه معينة بواحد واضافتها بالسجل الجديد

هل يوجد كود أقدر اطبق فيه نفس الخطوه ولكن بشكل صحيح؟

#2

اخي العزيز

جرب ان تقوم بفصل جملة select عن Insert

CREATE PROCEDURE InsertLo
(
	@LDesc varchar(50),
	@LDate datetime,
	@LNumber int,
	@ReqId int
)
AS 
DECLARE @a1 bigint, @MaxId bigint
SET  @MaxId = (SELECT COUNT(*) FROM dbo.TLo WHERE ReqId = @ReqId)
IF @MaxId != '' 
BEGIN 
	SET @a1 = (1 + @MaxId) END 
ELSE 
	SET @a1 = 1 

INSERT INTO TLo (LDesc, LDate, LNumber, ReqId)
VALUES 
(@LDesc, @LDate, @a1, @ReqId)

SELECT LId = @@Identity

تم تعديل هذه المشاركة بواسطة adel_elgo في 6 يونيو 2006 في 17:23

#3

السلام عليكم

اعتقد ان الخطأ هو فى وجود عملية الجمع داخل الاقواس

مثال

SELECT     COUNT(*) + 1 AS fld
FROM dbo.TLo

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#4

السلام عليكم و رحمة الله أخي صلاح :

كما تفضل الأخ Solo هناك مشكلة في الأقواس :

VALUES (@LDesc, @LDate,
	(SELECT COUNT((*)+1) FROM dbo.TLo
	WHERE ReqId = @ReqId), @ReqId))

وبالتحديد هنا :

(SELECT COUNT(*) +1 AS MyCol From dbo.TLo  WHERE ReqId = @ReqId)

بالتوفيق يا أخونا المشرف :)

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#5
adel_elgo كتب:
اخي العزيز

جرب ان تقوم بفصل جملة select عن Insert

CREATE PROCEDURE InsertLo
(
	@LDesc varchar(50),
	@LDate datetime,
	@LNumber int,
	@ReqId int
)
AS 
DECLARE @a1 bigint, @MaxId bigint
SET  @MaxId = (SELECT COUNT(*) FROM dbo.TLo WHERE ReqId = @ReqId)
IF @MaxId != '' 
BEGIN 
	SET @a1 = (1 + @MaxId) END 
ELSE 
	SET @a1 = 1 

INSERT INTO TLo (LDesc, LDate, LNumber, ReqId)
VALUES 
(@LDesc, @LDate, @a1, @ReqId)

SELECT LId = @@Identity

مشكور على الطريقه :)

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…