View Full Version : سوال: مشکل در هنگام اجرای store procedure در دلفی
m_yeganeh
سه شنبه 16 فروردین 1390, 16:49 عصر
سلام
من یک store procedure دارم که میخوام پارامتر های آن را بصورت realtime تعریف کنم
دستور ایجاد پارامتر ها را بصورت زیر نوشته ام :
Parameters.CreateParameter('pserial',ftString,pdIn put,5,MaskEdit1.Text);
پس از مقدار دهی بقیه پارامتر های storeprocedure زمانی که می خواهم اجرا کنم با دستور execute با خطای زیر مواجه می شم
68338
لطفا راهنمایی کنین .مرسی.
vcldeveloper
سه شنبه 16 فروردین 1390, 18:19 عصر
خب، پیام خودش داره میگه، wrong number or types of arguments؛ یعنی یا تعداد پارامترهایی که با اون SP دادید، اشتباه هست، یا نوع پارامترهایی که تعیین کردید، با نوع پارامترهایی که SP انتظار داره، یکی نیست.
m_yeganeh
پنج شنبه 18 فروردین 1390, 13:48 عصر
از نظر تعداد پارامتر و نوع پارامتر ها چک کردم همه درست هست . لطفا اگه سورسی برای مقدار دهی runtime و اجرای sp ها برام بگذارین ممنون می شم.
vcldeveloper
پنج شنبه 18 فروردین 1390, 20:38 عصر
من با PL\SQL کار نمی کنم، شما ببینید در همون سطر و ستونی که گزارش کرده، چه چیزی وجود داره؟ اگر همین SP را به همین شکل با همین پارامترها مستقیما توسط ابزارهای بانک اطلاعاتی مربوطه (اوراکل) اجرا کنید، چه نتیجه ایی میده؟
M_Maskout
جمعه 19 فروردین 1390, 02:24 صبح
از نظر تعداد پارامتر و نوع پارامتر ها چک کردم همه درست هست . لطفا اگه سورسی برای مقدار دهی runtime و اجرای sp ها برام بگذارین ممنون می شم.
سلام
من تو یه پروژه انبار کالا از query زیر برای به دست آوردن کاردکس ورود و خروج یه کالای خاص استفاده کردم:
SELECT tblGorooheKalaHa.KodeGorooh & "- " & tblGorooheKalaHa.NameGorooh AS Gorooh,
tblSabteKalaHa.NameKala,
tblSabteKalaHa.TedadeMojoodi,
tblVahedHa.Onvan AS Vahed
FROM (tblSabteKalaHa LEFT JOIN tblGorooheKalaHa
ON tblSabteKalaHa.KodeGorooh = tblGorooheKalaHa.KodeGorooh)
LEFT JOIN tblVahedHa ON tblSabteKalaHa.Vahed = tblVahedHa.Kod
WHERE tblSabteKalaHa.KodeKala = Value;
دستور بالا، شناسهی یه کالای خاص رو دریافت میکنه و query رو اجرا میکنه.
از کد زیر برای فرستادن پارامتر Value به دیتابیس استفاده کردم (من تو اون پروژه از اکسس 2003 استفاده کردم ولی فکر نمیکنم فرقی با بقیهی دیتابیسها بکنه):
qryReportQuery.ProcedureName := 'procJostejoo';
qryReportQuery.Parameters.CreateParameter('[Value]', ftInteger, pdInput, 0, KodeKala);
qryReportQuery.Active := True;
توضیحات:
qryReportQuery از نوع TADOStoredProc هست؛
qryReportQuery.Parameters.CreateParameter(نام پارامتر, نوع پارامتر, جهت پارامتر, سایز پارامتر, مقدار پارامتر);
البته میتونید از دستور زیر بعد از ایجاد پارامتر (دستور بالا) برای مقدار دهی پارامتر استفاده کیند:
qryReportQuery.Parameters[0].Value := مقدار پارامتر;
برای ftInteger (نوع پارامتر) و pdInput (جهت یا همون ورودی یا خروجی بودن پارامتر) هم باید از یونیت DB استفاده کنید.
امیدوارم کارِتون رو را بندازه.
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.