Rumah > pangkalan data > tutorial mysql > Mengapa Prosedur Disimpan SQL Saya Melemparkan Ralat 'Prosedur atau fungsi '...' menjangkakan parameter '@nama parameter', yang tidak dibekalkan'?

Mengapa Prosedur Disimpan SQL Saya Melemparkan Ralat 'Prosedur atau fungsi '...' menjangkakan parameter '@nama parameter', yang tidak dibekalkan'?

Barbara Streisand
Lepaskan: 2025-01-06 16:50:40
asal
311 orang telah melayarinya

Why Does My SQL Stored Procedure Throw a

Prosedur atau Fungsi Tersimpan Menjangka Parameter Yang Kononnya Dibekalkan

Apabila memanggil prosedur tersimpan untuk memasukkan data ke dalam pangkalan data SQL Server, anda mungkin menghadapi ralat "Prosedur atau fungsi ' nama prosedur tersimpan ' menjangka parameter '@nama parameter', yang tidak dibekalkan." Mesej ralat ini boleh membingungkan, terutamanya jika anda telah mengesahkan bahawa prosedur yang disimpan mempunyai parameter yang betul dan ia dibekalkan dalam kod anda.

Menyelesaikan Masalah Ralat

Untuk menyelesaikan isu ini, semak perkara berikut dengan teliti:

  • Sahkan Parameter Nama dan Jenis Data: Pastikan nama parameter dan jenis data dalam kod anda betul-betul sepadan dengan yang ditakrifkan dalam prosedur tersimpan. Gunakan selongsong yang sama dan elakkan sebarang kesilapan menaip.
  • Semak Jenis Perintah: Tentukan jenis arahan sebagai StoredProcedure untuk menunjukkan secara jelas bahawa anda sedang memanggil prosedur tersimpan. Meninggalkan tetapan ini boleh membawa kepada kesamaran tentang perintah yang sedang dilaksanakan.
  • Lumpuhkan Nilai Lalai: Jika nilai lalai ditakrifkan untuk parameter dalam prosedur yang disimpan, ia mesti dinyatakan secara eksplisit dalam kod anda, walaupun anda tidak mahu memberikan nilai tersuai.
  • Parameter Pesanan: Susunan parameter dalam kod anda mesti sepadan dengan susunan yang ditakrifkan dalam prosedur tersimpan. Jika parameter tiada atau tidak teratur, ralat akan berlaku.

Kemas Kini Kod Contoh

Berikut ialah versi kemas kini kod anda yang menyatakan secara jelas jenis arahan dan nilai parameter:

public void SHOWuser(string userName, string password, string emailAddress, List<int> preferences)
{
    using var dbcon = new SqlConnection(conn);
    using var cmd = new SqlCommand();

    cmd.Connection = dbcon;
    cmd.CommandType = System.Data.CommandType.StoredProcedure;
    cmd.CommandText = "SHOWuser";

    cmd.Parameters.AddWithValue("@userName", userName);
    cmd.Parameters.AddWithValue("@password", password);
    cmd.Parameters.AddWithValue("@emailAddress", emailAddress);

    dbcon.Open();
    int i = Convert.ToInt32(cmd.ExecuteScalar());

    cmd.Parameters.Clear();
    cmd.CommandText = "tbl_pref";

    foreach (int preference in preferences)
    {
        cmd.Parameters.Clear();
        cmd.Parameters.AddWithValue("@userID", Convert.ToInt32(i));
        cmd.Parameters.AddWithValue("@preferenceID", Convert.ToInt32(preference));

        cmd.ExecuteNonQuery();
    }
}
Salin selepas log masuk

Dengan memeriksa dengan teliti nama parameter, jenis data, jenis arahan dan pesanan parameter, anda boleh mengurangkan ralat ini dan berjaya melaksanakan prosedur tersimpan anda.

Atas ialah kandungan terperinci Mengapa Prosedur Disimpan SQL Saya Melemparkan Ralat 'Prosedur atau fungsi '...' menjangkakan parameter '@nama parameter', yang tidak dibekalkan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan