--- StoredProcedure.cs.1.0.6	2005-10-04 20:15:58.000000000 +0200
+++ StoredProcedure.cs	2005-10-04 20:29:00.523076312 +0200
@@ -122,9 +122,12 @@
 						if (parts.Length == 0) continue;
 						string direction = parts.Length >= 3 ? parts[0] : "in";
 						string vName = parts.Length >= 3 ? parts[1] : parts[0];
+						// FIXME: Check if ANSI_QUOTES is set
+						vName = vName.Trim('"'); 
 
 						string pName = connection.ParameterMarker + vName;
-						vName = "@" + hash + vName;
+						int paramIndex = cmd.Parameters.IndexOf(vName);
+						vName = "@" + hash + paramIndex;
 
 						if (direction.Equals("in"))
 							sqlStr += pName + ", ";
@@ -172,16 +175,16 @@
 			for (int i=0; i < reader.FieldCount; i++) 
 			{
 				string fieldName = reader.GetName(i);
-				fieldName = marker + fieldName.Remove(0, hash.Length+1);
-				reader.CurrentResult[i] = parameters[fieldName].GetValueObject();
+				int fieldIndex = Int32.Parse(fieldName.Remove(0, hash.Length+1));
+				reader.CurrentResult[i] = parameters[fieldIndex].GetValueObject();
 			}
 
 			reader.Read();
 			for (int i=0; i < reader.FieldCount; i++)
 			{
 				string fieldName = reader.GetName(i);
-				fieldName = marker + fieldName.Remove(0, hash.Length+1);
-				parameters[fieldName].Value = reader.GetValue(i);
+				int fieldIndex = Int32.Parse(fieldName.Remove(0, hash.Length+1));
+				parameters[fieldIndex].Value = reader.GetValue(i);
 			}
 			reader.Close();
 		}
--- command.cs.1.0.6	2005-10-04 19:45:50.000000000 +0200
+++ command.cs	2005-10-04 17:37:14.000000000 +0200
@@ -607,7 +607,7 @@
 					sqlPart.Remove( 0, sqlPart.Length ); 
 				}
 				else if (sqlPart.Length > 0 && sqlPart[0] == parameters.ParameterMarker && 
-					! Char.IsLetterOrDigit(c) && c != '_' && c != '.' && c != '$')
+					! Char.IsLetterOrDigit(c) && c != '_' && c != '.' && c != '$' && c != '@')
 				{
 					tokens.Add( sqlPart.ToString() );
 					sqlPart.Remove( 0, sqlPart.Length );