Guess you have the following query
select * from table where table.id in (:MyIDList)
and you want to pass a number of IDs in the binding variable :MyIDList from C# to your Oracle SQL. If you now check the types of binding variables available for this job, you find out that this Oracle only supports scalar types as binding variables.
If you now dig further you find a couple of bright solution that are all based on splitting up some string (varchar2) into several elements. But due to the fact, that the length of varchar2 binding variables is limited to 4/32K SQL/PLSQL this is not a scalable solution to the problem.
Even if you think you are smart, and you try a string replace of :MyIDList with the elements like 'a','b','c' let me assure you that the limit for written elements in an in statement is 1000. Also your performance will degrade significantly, as the query cache won't recognize the SQL as being executed before and therefore Oracle has to recompile it with every execution.
Is it impossible to pass an variable length array to SQL?
Let me put it straight!
Yes and No.
In pure SQL it is impossible to pass a variable length array to SQL.
But in PL/SQL it is not.
"Yes great", you think, "but I need it in SQL!"
The trick is a PL/SQL wrapper to SQL!
Simply use the following ingredients:
Define 2 global types (and don't try to be smart here. We need IDType for couple of reasons):
CREATE OR REPLACE
type IDTYPE as object (
id varchar2(20)
);
CREATE OR REPLACE
type IDTABLETYPE as table of IDType;
In PL/SQL now create a package
CREATE OR REPLACE PACKAGE MYPACKAGE
as
type stringTableType is table of varchar2(20) index by binary_integer;
procedure GetMyTableByIDs
(
p_MyIDList IN stringTableType,
p_outRefCursor out RefCursorType
);
end;
CREATE OR REPLACE PACKAGE BODY MYPACKAGE
as
TYPE RefCursorType IS REF CURSOR;
procedure GetMyTableByIDs
(
p_MyIDList IN stringTableType,
p_outRefCursor out RefCursorType
)
as
iMyIDList IDTableType;
begin
iMyIDList := IDTableType();
iMyIDList.Extend(p_MyIDList.count);
for i in p_MyIDList.First .. p_MyIDList.Last
loop
iMyIDList(i) := IDType(p_MyIDList(i));
end loop;
open p_outRefCursor
for
select * from table where table.id in (select id from table(iMyIDList));
end GetMyTableByIDs;
end;
What is going on here?
First thing you notice is that we have 2 very similar array (table) types.
Globally we defined the
type IDTABLETYPE as table of IDType -- IDType is varchar2(20)
This is in Oracle terms a "Nested Table". This type is available in SQL and PL/SQL. IDType brings the property "ID" of type varchar2(20).
In PL/SQL we defined the very similar type:
type stringTableType is table of varchar2(20) index by binary_integer;
This is an "index by table" or "associative array" in oracle terms. Associative arrays are better understood as "HashTable" and are available in PL/SQL only. For a more detailed explanation of the differences please have a look at "Collection Types in PL/SQL".
But why do you copy the arrays one by one?
Because you now see that Oracle has obviously 2 different development units for SQL and PL/SQL. And they do not seem to talk very much together.
The result of 3 days in short:
- There is no way to pass a nested table as parameter to a stored procedure in C#
- There is no way to use a associative array in SQL
- There is no way to assign/initialize a nested table to/with an associative array
Great, but how do we use it in C#?
OracleConnection conn = new OracleConnection("MyConnectionString");
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "MyPackage.GetMyTableByIDs";
cmd.CommandType = CommandType.StoredProcedure;
cmd.BindByName = true;
cmd.Parameters.Add(new OracleParameter("p_outRefCursor", OracleDbType.RefCursor)).Direction = ParameterDirection.Output;
cmd.Parameters.Add(new OracleParameter("p_MyIDList", OracleDbType.Varchar2)
{
CollectionType = OracleCollectionType.PLSQLAssociativeArray,
Value = my_list_with_ids.ToArray()
}
);
da = new OracleDataAdapter(cmd);
da.Fill(myDataSet);
It's not working!
I can't find neither
cmd.BindByName = true;
nor
OracleCollectionType.PLSQLAssociativeArray
The constraint of the solution is that you have to use Oracle .NET driver (Oracle.DataAccess) instead of the the Microsoft (System.Data.OracleClient) driver. But with .Net 4 the Microsoft's Oracle driver is marked deprecated anyway. So get used to it.
This is it. The only way to pass an array to a SQL.
"Holy shivers!" you think. This is a lot of glue for a simple task like this!
Basically yes, BUT
You can do 3 things now:
1.) I use a macro that converts my SQL into PL/SQL by automatically replacing the binding variable :MyIDList with the PL/SQL Parameter p_myIDList.
2.) You can tune your performance significantly by rewriting your SQL
3.) You can clean up your code a lot by using default values
Improve overall performance
Our former SQL
select * from table where table.id in (select id from table(iMyIDList))
becomes unbearable slow with a large number of ID's and lines in table. What you can do now is to rewrite our SQL to
select * from table where table.id
join (select id from table(iMyIDList)) IdFilter on table.id = IdFilter.id
And if you want to develop in SQL and simply convert it with our macro you can add the following function to your package:
FUNCTION GetDefaultTable
(
param varchar2
)
RETURN IDTableType
is
begin
return IDTableType(IDType(param));
end;
and rewrite your regular SQL to:
select * from table where table.id
join (select id from table(MyPackage.GetDefaultTable(:MyIDList)) IdFilter
on table.id = IdFilter.id
Use PL/SQL defaults:
A feature of our PL/SQL is that you can define default values for all parameters.
In a simple case this is:
procedure GetSomeThing
(
p_param1 in varchar2 default 'SomeDefaultValue',
);
but what do we do with our associative array?
The fancy part about default parameters is that the value can be a call to function.....
So
procedure GetSomeThing
(
p_MyIDList IN stringTableType default GetDefaultTable('DefaultValueForElement'),
p_param1 in varchar2 default 'SomeDefaultValue',
p_outRefCursor out RefCursorType
);
works nice and easy.
in combination with the line in C#
cmd.BindByName = true;
what you can do now is only pass parameters that differ from their defaults what can be used to write a much nicer code. Instead of passing all the parameters defined a for each procedure defined (results in a clunky piece of code), you just just set the parameter for any stored procedure if the associated value is non-default.
139 comments:
Well done, I came to the same conclusions. Why is this so hard, and not documented well anywhere? You'd think Oracle and Microsoft would be able to work out a better solution. Oh well, thanks for breaking down the working solution so well!
Thanks for the post, proved very useful, however for anyone else reading be aware of a couple of things
1) You need to add the following to the package spec
TYPE RefCursorType IS REF CURSOR;
If you don't you'll get an error from Oracle while compiling the package.
2) In the package body, before you call Extend, add the following
iMyIDList := IDTableType();
If you don't you'll get an ORA-06531 when you try to execute the function.
Thanks! Just updated the article
How many elements is considered large for the Table(delimited) usage that it starts to slow down the performance? Over 100? 1,000? 10,000?
I guess you refer to
"select * from table where table.id in (select id from table(iMyIDList))"
100 are ok
1000 can be acceptable
10000 sucks
performance degrades exponentially
There is an alternative to binding the "IN" clause. However it doesn't use bind variables, which in my opinion is a really bad idea especially in concurrent situations.
How it works is that the in clause be stored as string variable with comma seperated values. Take special note of the leading and trailing comma here
var_in_string=',1,2,3,4,'
Then construct the query block in this manner.
SELECT * FROM TABLE WHERE var_in_string LIKE '%,'||ID||',%'
This basically does a pattern matching between the passed in variable and the column value of id in the database table after concatenating a comma
so if the table has values of id
(1,9,0,10)
the comparison would be(i am showing one row at a time)
',1,2,3,4,' like '%,1,%' which will return true
I'm just now coming back to Oracle after working with MS SQL Server for a couple of years. I don't know if Oracle can do this, but in SQL Server, one way is to:
1. In C#, format the array or list as an XML "table".
2. Pass the entire XML string as VARCHAR2 to the stored proc.
3. Inside the stored proc, parse the XML into a local table variable (or a TEMP table could be used, which if shared could have a GUID callerid field to differentiate).
4. Format the SQL as
WHERE a. IN (SELECT * FROM )
Might run faster if using a global temp table.
Also in SQL Server, there is a Split( ) function that can be used to load a temp table or local table variable from a comma-delimited string (which works only if no commas in the values included in the list). Not sure if anything like this exists in Oracle, but a Split( ) function could easily be written.
This is easy in Sql. Place your array in a datatable. Go to sql and create a user defined data table type. Now pass your data table to the stored procedure and you can select from it as you would a normal table. Why on earth does oracle not have this functionality yet?????
I am new to all this and I am having trouble implementing this code example. I don't know what to put in the line:
da.Fill(myDataSet);
What is myDataSet?
I can get into the database and call my procedure which needs 4 inputs, but it does not get called with any parameters.
That all works fine when the array has items, but I get
System.InvalidOperationException: OracleParameter.Value is invalid
when the array is empty. And empty array is valid input for my procedure. Do you know some way to handle this?
@Martin,
In your case you are either expecting everything back from from the call or no data returned back from the call. In either case your solution is fairly straight forward if handled on the .Net side.
In the first case, call a different procedure in Oracle that does NOT require the variable (e.g. get_all_**** instead of get_****).
In the second case don't call Oracle at all, just return an empty initialized set.
What if I want to pass array of files (byte[]) to stored procedure?
Please see my post and please tell me if there exists any solution for doing it.
http://stackoverflow.com/questions/24360736/inserting-multiple-files-in-pl-sql-by-calling-stored-procedure-from-c-sharp
It'd help to mention that PL/SQL objects/types cannot be used in select statements since select statement only allow SQL objects/types.
It is a new tip to the conversion This blog is really helpful and useful..Oracle Training in Chennai
really very helpful bolog. but the cursor type should be declare into package
Excellent Post!
I spend two day looking for some help like this.
You make my week!!
Thank you for your post
Pretty article! I found some useful information in your blog, it was awesome to read, thanks for sharing this great content to my vision, keep sharing..
Android App Development Company
A very interesting case study
Sap MM Training In Chennai | Mainframe Training In Chennai | Hadoop Training In Chennai
Yes it is useful to know about the arrays to the required to Oracle. Also learn about the latest technologies such as Cloud Computing, With some quick links below,
best aws certification training in Chennai | best aws certification training in India | best aws certification training in Velachery | best aws certification training in OMR
The post is written in very a good manner and it entails many useful information for me. I am happy to find your distinguished way of writing the post. Now you make it easy for me to understand and implement the concept.
angularjs Training in marathahalli
angularjs interview questions and answers
angularjs Training in bangalore
angularjs Training in bangalore
angularjs Training in chennai
automation anywhere online Training
Nice tutorial. Thanks for sharing the valuable information. it’s really helpful. Who want to learn this blog most helpful. Keep sharing on updated tutorials…
Java interview questions and answers
Java training in Chennai | Java training institute in Chennai | Java course in Chennai
Java training in Bangalore | Java training institute in Bangalore | Java course in Bangalore
Java interview questions and answers
Thank you for this post. Thats all I are able to say. You most absolutely have built this blog website into something speciel. You clearly know what you are working on, youve insured so many corners.thanks
python training Course in chennai
python training in Bangalore
Python training institute in bangalore
Wow, what great information. I am sure the info on your blog will help others, as I am trying to do as well.
Oracle apps training |
Oracle Training in Chennai |
Oracle dba training in chennai
This is such a neat idea!
Software Testing Training |
Software Training |
Software Testing Training in Chennai
This is most informative and also this post most user friendly and super navigation to all posts... Thank you so much for giving this information to me.
rpa training in chennai
rpa training in bangalore
rpa course in bangalore
best rpa training in bangalore
rpa online training
Nice tutorial. Thanks for sharing the valuable information. it’s really helpful. Who want to learn this blog most helpful. Keep sharing on updated tutorials…
Best Devops Training in pune
excel advanced excel training in bangalore
Devops Training in Chennai
Your story is truly inspirational and I have learned a lot from your blog. Much appreciated.
python training in chennai
python training in chennai
python training in bangalore
Inspiring writings and I greatly admired what you have to say , I hope you continue to provide new ideas for us all and greetings success always for you..Keep update more information.
rpa training in chennai
rpa training in bangalore
rpa course in bangalore
best rpa training in bangalore
rpa online training
Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
Data Science Training in Chennai | Best Data science Training in Chennai
Data Science training in anna nagar | Data science training in Chennai
Data Science training in chennai | Best Data Science training in chennai
Data science training in Bangalore | Data Science training institute in Bangalore
Data Science training in marathahalli | Data Science training in Bangalore
Data Science interview questions and answers
<a href="http://ww
your topic is inspirational that's the useful one.
nebosh course in chennai
safety course in chennai
ok ok ok ok
Phối chó bull pháp
Phối giống chó Corgi
Phối chó Pug
Phối giống cho Pug
Chúc bạn một ngày tốt lành. Cảm ơn bạn đã chia sẻ bài viết thú vị như thế!
lều xông hơi mini
mua lều xông hơi ở đâu
lều xông hơi gia đình
bán lều xông hơi
xông hơi hồng ngoại
May mắn và hạnh phúc luôn đồng hành bên bạn! Cảm ơn vì bài viết
GIẢO CỔ LAM GIẢM BÉO
MUA GIẢO CỔ LAM GIẢM BÉO TỐT Ở ĐÂU?
NHỮNG ĐIỀU CHƯA BIẾT VỀ GIẢO CỔ LAM 9 LÁ
Giảo Cổ Lam 5 lá khô hút chân không (500gr)
May mắn và hạnh phúc luôn đồng hành bên bạn! Cảm ơn vì bài viết
Trị dứt điểm bệnh viêm xoang bằng máy xông hương tinh dầu cao cấp
Công ty phân phối máy khuếch tán tinh dầu Hà Nội uy tín chất lượng
Máy khuếch tán tinh dầu Chery A07 cải tạo không khí thân thiện môi trường
Công dụng của máy khuếch tán tinh dầu- bạn có thể tham khảo
చాలా ప్రత్యేకమైన వ్యాసం. భాగస్వామ్యం చేసినందుకు ధన్యవాదాలు
Dịch vụ phối giống chó Alaska tại Hà Nội
Dịch vụ phối giống chó Pug tại Hà Nội
Chuyên dịch vụ phối giống chó Corgi tại Hà Nội
Quy trình phối giống chó Bull Pháp
Bài viết rất thú vị
Công dụng của giảo cổ lam 5 lá
Giá bán hạt methi bao nhiêu tiền?
Hạt methi mua ở đâu Thanh Xuân tốt?
Dùng hạt methi trị tiểu đường tuyp 2
Công dụng giảm béo của giảo cổ lam
Es fácil ganarse una confianza que( tam san be tong sieu nhe ) es fácil de destruir, es ( Sàn panel Đức Lâm ) importante no engañar a los grandes( tấm bê tông siêu nhẹ ) o pequeños, pero el engaño ha sido el problema
<a href="https://vidmate.vin/
get free apps on 9apps
Your articles really impressed for me,because of all information so nice.robotic process automation (rpa) training in bangalore
Being new to the blogging world I feel like there is still so much to learn. Your tips helped to clarify a few things for me as well as giving.uipath training in bangalore
It’s really Nice and Meaningful. It’s really cool Blog. You have really helped lots of people who visit Blog and provide them Useful Information. Thanks for Sharing.dot net training in bangalore
Really very happy to say, your post is very interesting to read. I never stop myself to say something about it.You’re doing a great job. Keep it up...
Become an Expert In DBA Training in Bangalore! The most trusted and trending Programming Language. Learn from experienced Trainers and get the knowledge to crack a coding interview, @Bangalore Training Academy Located in BTM Layout.
Very interesting, good job and thanks for sharing such a good blog.
Real Time Experts Training Center is one of the Best SAP PP Training Institutes in Bangalore with 100% placement support. SAP Production Planning training in Bangalore provided by sap pp certified experts and real-time working professionals with handful years of experience in real time sap pp projects.
Really i appreciate the effort you made to share the knowledge. The topic here i found was really effective...
Looking for Salesforce CRM Training in Bangalore, learn from eTechno Soft Solutions Salesforce CRM Training on online training and classroom training. Join today!
Really i appreciate the effort you made to share the knowledge. The topic here i found was really effective...
Learn SAP Training from the Industry Experts we bridge the gap between the need of the industry. Softgen Infotech provide the Best SAP Training with 100% Placement Assistance. Book a Free Demo Today.
Post is very useful. Thank you, this useful information.
Get SAP ABAP Training in Bangalore from Real Time Industry Experts with 100% Placement Assistance in MNC Companies. Book your Free Demo with eTechno Soft Solutions.
This is the exact information I am been searching for, Thanks for sharing the required infos with the clear update and required points. To appreciate this I like to share some useful information.
mulesoft training in bangalore
mulesoft courses in bangalore
mulesoft classes in bangalore
mulesoft training institute in bangalore
mulesoft course syllabus
best mulesoft training
mulesoft training centers
Thank you for your post. This is excellent information. It is amazing and wonderful to visit your site.
sap mm training in bangalore
sap mm courses in bangalore
sap mm classes in bangalore
sap mm training institute in bangalore
sap mm course syllabus
best sap mm training
sap mm training centers
We as a team of real-time industrial experience with a lot of knowledge in developing applications in python programming (7+ years) will ensure that we will deliver our best in python training in vijayawada. , and we believe that no one matches us in this context.
Thanks loads for writting this kind of fantastic article.
It's simply has plenty of insights and valueable informtion.
click here formore info.
Very nice post. thanks for sharing with us.
aws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore
Very correct statistics furnished, Thanks a lot for sharing such beneficial data.
katmovies
Read my post here
Java programmer
Java programmer
Java programmer
I am really happy with your blog because your article is very unique and powerful for new reader.
aws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore
Bài viết quá
case máy tính cũ
vga cũ hà nội
mua bán máy tính cũ hà nội
Lắp đặt phòng net trọn gói
Thank you for your post. This is excellent information.
Scholarship Preparation Classes
An impressive share! I've just forwarded this onto a coworker who has been doing a little homework on this. And he actually ordered me lunch because I found it for him... lol. So allow me to reword this.... Thanks for the meal!! But yeah, thanks for spending time to discuss this issue here on your web page.
Selenium Courses in Marathahalli
selenium institutes in Marathahalli
selenium training in Bangalore
Selenium Courses in Bangalore
best selenium training institute in Bangalore
selenium training institute in Bangalore
I needed to thank you for this excellent read!! I certainly loved every little bit of it. I have got you book-marked to look at new things you post…
Best Advanced Java Training In Bangalore Marathahalli
Advanced Java Courses In Bangalore Marathahalli
Advanced Java Training in Bangalore Marathahalli
Advanced Java Training Center In Bangalore
Advanced Java Institute In Marathahalli
Great post! We will be linking to this get great article on our website. Keep up the great writing.
ok hi
https://forums.pokemmo.eu/index.php?/profile/131787-cualuoihm/
https://doremir.com/forums/profile/cualuoihm
https://www.wincert.net/forum/profile/100889-cualuoihm/
https://www.goodreads.com/user/show/104133368-cualuoihm
haizzz
Bồn ngâm chân
máy ngâm chân
bồn massage chân
may mat xa chan
A fascinating discussion is definitely worth comment. I do think that you need to write more on this subject matter, it might not be a taboo subject but generally people do not speak about these issues. latest To the next! Kind regards!!
Thanks for sharing GPS Vehicle tracking system
amazing blog!!!!
Thanks
washing machine service centre in Coimbatore
Hi, This is your awesome article , I appreciate your effort, thanks for sharing us.
cism training
cism certification
cisa training,
cisa certification
cisa exam
Hi, This is your awesome article , I appreciate your effort, thanks for sharing us.
cism training
cism certification
cisa training,
cisa certification
cisa exam
Nice post.
kerala honeymoon resorts
great post. thanks for sharing.
Roller blinds
Super post.keep it up.
personalised childrens story books
one of the good informative one
BEST ANGULAR JS TRAINING IN CHENNAI WITH PLACEMENT
https://www.acte.in/angular-js-training-in-chennai
https://www.acte.in/angular-js-training-in-annanagar
https://www.acte.in/angular-js-training-in-omr
https://www.acte.in/angular-js-training-in-porur
https://www.acte.in/angular-js-training-in-tambaram
https://www.acte.in/angular-js-training-in-velachery
Great article! with an nice content. keep doing on more.
AngularJS training in chennai | AngularJS training in anna nagar | AngularJS training in omr | AngularJS training in porur | AngularJS training in tambaram | AngularJS training in velachery
Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging.
Artificial Intelligence Training in Chennai | Certification | ai training in chennai | Artificial Intelligence Course in Bangalore | Certification | ai training in bangalore | Artificial Intelligence Training in Hyderabad | Certification | ai training in hyderabad | Artificial Intelligence Online Training Course | Certification | ai Online Training | Blue Prism Training in Chennai | Certification | Blue Prism Online Training Course
Forex Signals, MT4 and MT5 Indicators, Strategies, Expert Advisors, Forex News, Technical Analysis and Trade Updates in the FOREX IN WORLD
Forex Signals Forex Strategies Forex Indicators Forex News Forex World
I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously in their life, he/she can earn his living by doing blogging.thank you for thizs article.
https://www.learnovita.com/angular-js-training-in-chennai
https://www.learnovita.com/angular-js-training-in-velachery
https://www.learnovita.com/angular-js-training-in-tambaram
https://www.learnovita.com/angular-js-training-in-porur
https://www.learnovita.com/angular-js-training-in-omr
https://www.learnovita.com/angular-js-training-in-annanagar
Nice tutorial. Thanks for sharing the valuable information. it's really helpful. Who want to learn this blog most helpful. Keep sharing on updated tutorials
Angular js Training in Chennai
Angular js Training in Velachery
Angular js Training in Tambaram
Angular js Training in Porur
Angular js Training in Omr
Angular js Training in Annanagar
Nice tutorial. Thanks for sharing the valuable information. it's really helpful. Who want to learn this blog most helpful. Keep sharing on updated tutorials
Angular js Training in Chennai
Angular js Training in Velachery
Angular js Training in Tambaram
Angular js Training in Porur
Angular js Training in Omr
Angular js Training in Annanagar
Nice blog. Thanks for sharing such great information. Thanks a lot for writting such a great article. It's really has lots of insights and valuable information.
Angular js Training in Chennai
Angular js Training in Velachery
Angular js Training in Tambaram
Angular js Training in Porur
Angular js Training in Omr
Angular js Training in Annanagar
Insightful blog! appreciate the way it is written. Thanks for your thoughts and time in articulating in a well structured manner. Really easy to understand and it is very helpful
Selenium Training in Chennai
Selenium Training in Velachery
Selenium Training in Tambaram
Selenium Training in Porur
Selenium Training in Omr
Selenium Training in Annanagar
Insightful blog! appreciate the way it is written. Thanks for your thoughts and time in articulating in a well structured manner.
amazon web services aws training in chennai
microsoft azure course in chennai
workday course in chennai
android course in chennai
ios course in chennai
Wow, what great information. I am sure the info on your blog will help others, as I am trying to do as well.
IELTS Coaching in chennai
German Classes in Chennai
GRE Coaching Classes in Chennai
TOEFL Coaching in Chennai
Spoken english classes in chennai | Communication training
I see you know very much about oracle, if you want to create youtube channel about it, you can use this site https://soclikes.com/ to get your first youtube subscribers
Nice & Informative Blog !
you may encounter various issues in QuickBooks that can create an unwanted interruption in your work. To alter such problems, call us at QuickBooks Customer Support Number 1-855-974-6537 and get immediate technical services for QuickBooks in less time.
Nice Blog !
users can easily maintain all the business accounting processes through a single software. To get support for payroll update, installation, and download error, call us at Quickbooks Customer Support Number 1-877-751-0742 and get instant technical solutions to curb QuickBooks problems.
Hey! Good blog. I was facing an error in my QuickBooks software, so I called QuickBooks Error 6123 (855)756-1077. I was tended to by an experienced and friendly technician who helped me to get rid of that annoying issue in the least possible time.
Hey! Mind-blowing blog. Keep writing such beautiful blogs. In case you are struggling with issues on QuickBooks software, dial QuickBooks Support Number (877)603-0806. The team, on the other end, will assist you with the best technical services.
Nice & Informative Blog !
you may encounter various issues in QuickBooks that can create an unwanted interruption in your work. To alter such problems, call us at QuickBooks Customer Service Number 1-877-948-5867 and get immediate technical services for QuickBooks in less time.
Thank you for your suggestion. I was searching like this about two days.
To buy a second hand mobile is not easy when you have no idea about 2nd hand phone price in bd. So you can search in Quikads; a classified ads platform in Bangladesh. Where you will get so many ideas about second hand mobile phone prices in Bangladesh.
I’m usually to blogging and i really enjoy your content.The article has truly talks my interest. I’m going to save your web site and also keep checking for new information.
Bigasoft Total Video Converter Crack
Our experts at QuickBooks Customer Service are available to help you fix all your QuickBooks issues in this global situation.
Really Amazing Article, I have seen here. This is in related to your article that the Best Digital Marketing Course offered by 99 Digital Academy. The course is designed for students, professionals and for business owners. This course is in trend. Click on link to see more.
Nice Blog !
One such annoying error is QuickBooks Error 15241. If you need immediate help with this particular issue, call us and get feasible solutions for QuickBooks problems.
buy juicy fruit online
buy gelato strain online
Buy dark star strain online
buy hawaiian skunk strain online
buy bc big bud strain leafly
buy auto flowering seeds online
buy brass knuckles vape recall 2018
buy alaskan thunder fuck online
buy cannabis seeds bank online
Thanks for the interesting content. I like your post and your blog is amazing.
If you are interested in Video Downloader apps you can check my blog site. It is new and really informative.
utorrent pro mod apk free download
Master Wang earned fame and recognition from the streets where he was offering his soulmate drawing services. Master Wang drawings service’s popularity and remarkable effectiveness led to high demand by people from all parts of the world. His psychic and astrology abilities are exceptional, and he has successfully guided millions of people towards their soulmates. He has now created his website to ensure everyone in the world can benefit from his soulmate drawings. Master Wang’s new soulmate drawing services represent the best and most unique solution to finding your precious soulmate. He leverages his years of experience in astrology and being a psychic to create compelling visuals that often come true. With a few simple questions, he will see and draw your soulmate and help you on your personal love journey.
The 1tac TC1200 utilizes Cree XML2 LED innovation and has a yield of 1200 Lumens. The life expectancy of the electric lamp is around 100,000 hours of light. The TC1200 additionally has a carefully directed net to guarantee that the splendor is kept up for the duration of the existence of the morning. You may have used the flashlight before, but 1tac TC1200 tactical flashlight is different from others. These are flashlights intended to pull twofold obligation. In addition to the fact that they function as electric lamps to help you find uncertainty, they also fill in as weapons.
Master Wang earned fame and recognition from the streets where he was offering his soulmate drawing services. Check now Master Wang drawings reviews for more information. Its service’s popularity and remarkable effectiveness led to high demand by people from all parts of the world. His psychic and astrology abilities are exceptional, and he has successfully guided millions of people towards their soulmates. He has now created his website to ensure everyone in the world can benefit from his soulmate drawings. Master Wang’s new soulmate drawing services represent the best and most unique solution to finding your precious soulmate. He leverages his years of experience in astrology and being a psychic to create compelling visuals that often come true. With a few simple questions, he will see and draw your soulmate and help you on your personal love journey.
Nice post.
Best Online Herbal Shop
Thanks for the content with useful code shared. Keep sharing
Data Science Training in Pune
Hey! What a wonderful blog. I loved your blog. QuickBooks is the best accounting software, however, it has lots of bugs like QuickBooks Error. To fix such issues, you can contact experts via QuickBooks Customer Service
I like it when people come together and share ideas. Great site, keep it up!
Hadoop Training in Bangalore
Python Training in Bangalore
AWS Training in Bangalore
UI Development training in Bangalore
Machine Learning Training in Bangalore
Machine Learning Training with Python in Bangalore
Data Science Using Python Training in Bangalore
Hey! Nice Blog, I have been using QuickBooks for a long time. One day, I encountered QuickBooks Customer Service in my software, then I called QuickBooks Customer Service. They resolved my error in the least possible time.
i m very happy after read your Article .if you have +18555525662 facing some unexpected issue .to fix such type issue call at quickbooks customer service
QuickBooks software for managing business various accounting process if you have facing some unwanted errors then to fix such problems at
quickbooks customer service
We should look at How To Earn Money By Becoming An Ajio Affiliate Program? We as a whole realize that Ajio is a famous shopping site that gives a phenomenal method to clients to acquire from offshoot promoting. Ajio is the shopping site where you can without much of a stretch buy your necessary items, including garments, shoes, and different bits of stuff, at a truly sensible cost. There is no secret truth that the Ajio application is the site where clients or purchasers can benefit from the item at a moderate cost.
In case you are considering how you can bring in money from this shopping site, you have arrived at the correct spot. Presently you don't have to turn down great many website pages to look for or access quality data with respect to this field. Member promoting programs guarantee to give perhaps the best interaction to the clients to make money drastically. Ajio shopping site likewise carries select worldwide brands to their crowd and, more often than not guarantees to give extraordinary limits. Limits of at least 50% are accessible on their shopping site. On the off chance that we talk about assistance support, the Ajio stage just takes 2 to 9 days to convey the particular items to the shopper.
Hey! Lovely blog. Your blog contains all the details and information related to the topic. In case you are a QuickBooks user, here is good news for you. You may encounter any error like QuickBooks Error, visit at QuickBooks Customer Service Number for quick help.
Nice blog
Visit - Elewayte - Best Online Course
to get trained in one of the best online training institutions with internships and placement assistance.
Hey! Lovely blog. Your blog contains all the details and information related to the topic. In case you are a QuickBooks user, here is good news for you. You may encounter any error like QuickBooks Error, visit at QuickBooks Customer Service (855)741-3663 for quick help.
Thank you for sharing such a really admire post. Your post is great!..Agro Fertilizer Company in India
Hey! Mind-blowing blog. Keep writing such beautiful blogs. In case you are struggling with issues on QuickBooks for MAC Support , dial QuickBooks Support Phone Number (602)325-1557. The team, on the other end, will assist you with the best technical services.
nice blog.We provide best quickbooks customer service you can reach us at.+1 888-210-4052
nice blog.this is too god in quickbook customer service you can contact quickbook customer services team at.+1 346-414-8256
Nice & Informative Blog !
In case you face any technical issue in QuickBooks, call us at QuickBooks Customer Service Phone Number +1 346-414-8256and get feasible solutions for QuickBooks problems.
we are proving the best Quickbook support services interested one can contact us easily and get the entire details regarding the same.+18666695068
Good Blog!! If you are searching for QUICKBOOKS SUPPORT SERVICE SUPPORT. you can reach us at.+13464148256
nice blog. if you are looking forQuickbooks support service.you can contact us at.+18776030806
Good content!!
if you want to a best service so go to Quickbook support serviceyou can contact us at.+1 888-210-4052
Good blog. Here is mastery about yoga yoga , yogainfo , meditational basics , yoga benefits , types of yoga , - theyogainfo.com you reach us at
Awesome bolg. Keep calm your Mind anwith peaceful Yoga and regulate it with peaceful yoga Suryanamaskar. meditation basics yoga , yoga benefits , types of yoga , yoga history , health benefit yoga , yoga pose , yoga asanas - theyogainfo.com you reach us at
It`s a very good blog. Start your day from Suryanamaskar to make day Energetic. meditation basics yoga , yogainfo, theyogainfo.com you reach us at
I find it useful is the ability to call Quickbooks phone numbers for help. This can be done by dialing Quickbooks Support Phone Number +1 8555644161. When you do, you will reach the customer service team, who will be able to provide assistance with any question or issue that you may have.
Here is an amazing QuickBooks phone number: Quickbooks Customer Service +1 888-210-4052. This will help you in any query related to the software.
QuickBooks also offers live chat support as well as email support which allows businesses who are out of the office or at home to access QuickB's qualified help desk staff. The QuickBooks Service Number is +1 888-210-4052 and is always available 24 hours a day to serve you with all your QuickBooks questions.
Nice post.Thanks for sharing.
wine delivery Melbourne
Very informative Blog by you for the people who are new to this industry. Your detailed blog solves all the queries with good explanation. Keep up the good work. Thanks for sharing! Please check out our courses of hadoop by inventateq.
web development course in bangalore
website developer training in bangalore
Very informative Blog by you for the people who are new to this industry. Your detailed blog solves all the queries with good explanation. Keep up the good work. Thanks for sharing! We have a website too. Feel free to visit anytime.
buy western dresses online
western wear women
Very informative Blog by you for the people who are new to this industry. Your detailed blog solves all the queries with good explanation. Keep up the good work. Thanks for sharing! We have a website too. Feel free to visit anytime.
packers and movers in Bandra
packers and movers in Airoli
I am exteremly impressed by your blog, because its very powerful for the new readers and have lot of information with proper explanation. Keep up the good work. Thanks for sharing this wonderful blog! We also have a website. Please check out whenever and wherever you see this comment.
marriage invitation card
Online Wedding Card Maker
Thank you so much for sharing this very Useful And More Informative post. Your blog has a lot of material with clear explanations and is really effective for new readers, therefore I'm very impressed. Keep up the excellent work. Thank you for distributing this fantastic blog! Moreover, we have a website. When and whenever you see this comment, please check it out.
taxi service in Ahmedabad
cab service in Ahmedabad
taxi on rent in Ahmedabad
Your blog has a lot of material with clear explanations and is really effective for new readers, therefore I'm very impressed. Keep up the excellent work. Thank you for distributing this fantastic blog! Moreover, we have a website. When and whenever you see this comment, please check it out.
digital marketing company in mohali
SEO Company in Mohali
Your blog has a lot of material with clear explanations and is really effective for new readers, therefore I'm very impressed. Keep up the excellent work. Thank you for distributing this fantastic blog! Moreover, we have a website. When and whenever you see this comment, please check it out.
MP3 File Converter
Quick Convert
" This blog is given us the power to choose wisely. Your willingness to share your knowlwdge with other is admirable." DevOps Course
" Your blog post gave a clear and understanding subject." MSBI Training
This blog is given us the power to choose wisely. i appreciate your contributions. MSBI Certification
This blog is very helpful and easy to understand. MSBI Course
Hi, times confuse with an array, and these functions just give some clearance about the array.
uk persons can visit for related jobs of construction company worksheriff
Post a Comment