צפיות
תשובות
שלום רב העברת פרמטרים MSSQL ASP
שלום
יש לי בעיה בקבלת פרמטרים מפונקציה מאוחסנת ב MSSQL
יש לי פונקציה KKK שמקבלת נתון מחרוזת ומחזירה מחרוזת
כשאני מריץ על המסד הכל בסדר עם הפונקציה והיא מחזירה מה שצריך
אך בהרצה עם ASP אני מקבל שגיאה
זה הקוד שלי ב ASP
str_sm="1234567"
set conn=server.createobject("adodb.connection")
conn.open dsn
set rs=server.createobject("adodb.recordset")
rs.activeconnection=conn
sql = "Declare @SS varchar(100),@DD Varchar(50); execute KKK '"&str_sm&"',@DD output; select @DD "
set rs = conn.execute(sql)
Response.write rs(1)
rs.close: set rs = nothing:conn.close: set conn = nothing
היכן טעיתי ?
זו השגיאה שאני מקבל
ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/abc.asp, line 53
53 זו השורה:
Response.write rs(1
7 תשובות
אז ככה:
א) אם זו מחרוזת בודדת, תנסה להשתמש ב (rs(0, כי זה האיבר הראשון, לא (rs(1.
ב) אם גם זה לא מצליח, תקרא לפונקציה דרך stored procedure, ותחזיר את הערך כמשתנה output.
מצאתי שהבעיה יותר מוזרה
כשהפרוצדורה מבצעת INSERT היא לא מחזירה לי פרמטר
אבל אם היא מבצעת SELECT או דבר אחר אז כן
מה זה יכול להיות
תודה
איך נראית הפרוצדורה?
INSERT ברמת העקרון לא אמור להחזיר ערכים…
העניין הוא שגם אם אחרי ה INSERT …
ניסיתי להחזיר סתם את המילה "BOY"
זה לא הולך
ניסיתי לתקוף את הנושא בכיוון אחר וגם לא הולך
אותה בעיה
כך:
כשיש אחר INSERT הוא לא מעביר כלום
כשאין הוא מעביר והכל בסדר
וניסיתי להחזיר סתם את המילה "BOY" אחרי ה INSERT ולא הולך
dsn="חיבור מחרוזת"
set cmd=Server.CreateObject("ADODB.command")
set conn=server.createobject("adodb.connection")
Set rs= Server.CreateObject("ADODB.Recordset")
conn.open dsn
cmd.ActiveConnection = conn
rs.activeconnection=conn
cmd.CommandText = "שם פרוצדורה"
cmd.CommandType = 4
str_paramters="12345" ' נתון שאני מעביר לפרוצדורה
cmd.Parameters.Append cmd.CreateParameter("@DD" , 200,1,1000,str_paramters) ' מקבל גודל 1000
cmd.Parameters.Append cmd.CreateParameter("@AA" , 200,2,50) ' מחזיר
Set rs = cmd.Execute
DATA = cmd.Parameters("@AA").Value
response.write DATA
Set Cmd = Nothing
'rs.close: set rs = nothing
conn.close: set conn = nothing
והקוד SQL?
זה לא שאני כזה חטטן, אבל פשוט בלי לראות את הקוד שלך אין לי שום דבר לעזור…
בבקשה
2 פרוצדורות פשוטות שאחת קוראת לשניה
בגלל שהשנייה מבצעת INSERT הפרמטר לא חוזר
CREATE PROCEDURE [test] (@Result_Desc1 Varchar(20) OUT)AS
Declare @Counter Int
exec test2
set @Result_Desc1= 'Hello'
GO
CREATE PROCEDURE tttt.test2 AS
Insert
Into dbo.Projects_Log (Project,
Source,
Call_TimeStamp)
Values (1,
1,
GetDate())
GO
תודה זהר פתרתי
אשמח להציג את הדוגמא במאמרים שלכם
בשביל הדורות הבאים
איך עושים זאת?
במקום
'Set rs = cmd.Execute
את זה:
a=128
cmd.Execute , , a
מפני שלא חוזר רקורד סיט
רק הפרמטר