Все здесь всегда были такой большой помощью, прямо или косвенно. И это с большой надеждой, что это, опять же, звучит правдоподобно.Проблема с введением параметра VB в хранимую процедуру (FireBird)
Для получения разъяснений пользы, хранимые процедуры выполняются под FireBird и VB имеет разнообразие .NET
У меня есть хранимая процедура (выдержка ниже, важный бит ГДЕ)
select pn, pnm.description, si_number, entry_date, cmp_auto_key,
parts_flat_price, labor_flat_price, misc_flat_price, woo_auto_key,
wwt_auto_key
from parts_master pnm, wo_operation woo
where pn like :i_pn || '%'
and pnm.pnm_auto_key = woo.pnm_auto_key
into :pn, :description, :work_order, :entry_date, :cmp, :parts_price,
:labor_price, :misc_price, :woo, :wwt
Я пытаюсь передать параметр из приложения vb, в котором используется параметр I_PN, код которого приведен ниже (переменные для MyServer и MyPassword определены из более ранней части кода.)
Try
Dim FBConn As New FirebirdSql.Data.FirebirdClient.FbConnection()
Dim FBCmd As FirebirdSql.Data.FirebirdClient.FbCommand
Dim MyConnectionString As String
MyConnectionString = _
"datasource=" & MyServer & ";database=" & TextBox4.Text & "; & _
user id=SYSDBA;password=" & MyPassword & ";initial catalog=;"
FBConn = New FirebirdSql.Data.FirebirdClient. & _
FbConnection(MyConnectionString)
FBConn.Open()
FBConn.CreateCommand.CommandType = CommandType.StoredProcedure
FBCmd = New FirebirdSql.Data.FirebirdClient. & _
FbCommand("WIP_COSTS", FBConn)
FBCmd.CommandText = "WIP_COSTS"
FBConn.CreateCommand.Parameters. & _
Add("@I_PN", FirebirdSql.Data.FirebirdClient.FbDbType.Text). & _
Value = TextBox1.Text
Dim I_PN As Object = New Object()
Me.WIP_COSTSTableAdapter.Fill(Me.WOCostDataSet.WIP_COSTS, @I_PN)
FBConn.Close()
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
Когда я исполняю VB.App и попытаться запустить программу, я получаю следующее сообщение об ошибке:
Dynamic SQL Error
SQL Error Code = -206
Column Unknown
I_PN
At Line 1, column 29
И я не могу достаточно положить палец на то, что фактическая проблема. Смысл, я не знаю, была ли неправильная логика на стороне VB или в Хранимой процедуре.
Любое кодирование, которое включено, исключается из примеров, которые я нашел с различными битами кода, найденными во время длительного пребывания в GoogleFu.
Как любой человек, у которого более чем на месяц или два опыта (в отличие от меня) с VB, можно просто взглянуть на мой взгляд - мой код, вероятно, довольно дерьмовый и плохо сформированный - конечно, не изящный и, несомненно, в операционной. Я, конечно, развлекаю все вкусы советов с распростертыми объятиями.
Как обычно, если у вас есть дополнительные вопросы, я отвечу им в меру своих возможностей.
Еще раз спасибо.
Jasoomian
HardCode - до сих пор нет радости. По-прежнему получает ту же ошибку во время выполнения. – Jasoomian
Я не знаю синтаксиса SPs Firebird, но этот оператор - где pn like: i_pn || '%' - похоже, что он говорит «LIKE параметр OR%» - вместо - «LIKE параметр, связанный с%». Должно ли это быть «где pn like: i_pn + '%» – HardCode
В Firebird || является символом конкатенации, поэтому код уже делает то, что вы предложили (по крайней мере, таким образом). – Jasoomian