我正在編寫一個小型Windows應用程序,我的任務是允許系統的用戶通過存儲過程添加,刪除,更新和查看記錄。我能夠查看和更新現有記錄,但我無法正確添加記錄。添加功能添加PartNo和數量,但不添加PartName或製造商。當我添加新零件後刷新表格時,它們顯示爲零。這是我的下面的添加子例程和我的存儲過程。我正在使用Oracle SQL Developer和Visual Studio 2015.我的語法是否正確,或者我缺少使add方法排除PartName和Manufacturer的內容。通過Windows表單添加到Oracle數據庫
,增加了記錄的部分表
Private Sub addPart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addPart.Click
Dim cmd As New OracleCommand("Garage.ADDPART", Form1.Connect())
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@PARTNO", Val(txtAddPartNo.Text))
cmd.Parameters.Add("@PARTNAME", Val(txtAddPartName.Text))
cmd.Parameters.Add("@MANUFACTURER", Val(txtAddManufacturer.Text))
cmd.Parameters.Add("@QUANTITY", Val(txtAddQuantity.Text))
Try
cmd.ExecuteNonQuery()
MsgBox("Record Added")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
// ADDPART存儲過程
create or replace procedure ADDPART(
new_partno PART.PARTNO%type,
new_partname PART.PARTNAME%type,
new_manufacturer PART.MANUFACTURER%type,
new_quantity PART.QUANTITY%type)
as
begin insert into PART
(PARTNO, PARTNAME, MANUFACTURER, QUANTITY)
values
(new_partno, new_partname, new_manufacturer, new_quantity);
Commit;
exception
when dup_val_on_index then
raise_application_error(-20001, 'Product already exists');
when others then
raise_application_error(-20011, sqlerrm);
END ADDPART;
鑑於VB調用存儲過程中描述的數據類型,我假設它們都是數字,因爲您正在使用'val()'函數將它們從文本轉換爲數字。我的猜測是,零件名稱和製造商中的文本正在轉換爲零。你可以發佈部分創建表腳本? –
我不明白你的意思 – GreenCoder
在你的代碼中,你使用'val()'函數將每個文本框中的文本轉換爲數字,在你的問題中顯而易見的是'txtAddPartName.Text'和' txtAddManufacturer.Text'正在轉換爲編號。我很想知道part table列是數字還是varchar2列,所以我問你是否可以發佈你的表格腳本作爲part table。我懷疑這些文本框中的數據不是數字,而是轉換爲零,我正在尋找證據。 –