我有一个名为a的表,列为x。
TYPE rc IS RECORD ( p o.p%type,
q o.q%type,
r o.r%type);
现在我想基于上面的sql动态创建一个记录类型,即
Imports System.Text.RegularExpressions
Module globalmodule
Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
Public rss As New ADODB.Recordset
Public trs As New ADODB.Recordset
Public sql As String
Public Function Opendb()
If conn.State = 1 Then conn.Close()
conn.Open("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=dbEmployee;Data Source=TECHNOPU\SQL;")
Return 0
End Function
Function EmailAddressCheck(ByVal emailAddress As String) As Boolean
Dim pattern As String = "^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"
Dim emailAddressMatch As Match = Regex.Match(emailAddress, pattern)
If emailAddressMatch.Success Then
EmailAddressCheck = True
Else
EmailAddressCheck = False
End If
If EmailAddressCheck = False Then
MsgBox("Entervalid E-mail ID")
End If
End Function
Public empid As String
End Module
请告诉我如何在运行时创建上述记录。
如果不可能,请建议任何解决方法。
谢谢。
答案 0 :(得分:0)
如果您只想在代码中使用此表的记录而不需要创建类型,则可以将行类型变量声明为下面的
CREATE TABLE xx_emp (emp_id NUMBER, emp_name VARCHAR2(100));
DECLARE
l_emp_type xx_emp%ROWTYPE;
BEGIN
l_emp_type.emp_id := 10;
l_emp_type.emp_name := 'JOE';
END;
答案 1 :(得分:0)
当您对之前的回答发表评论时,我将假设“dinamically”您希望根据可能包含联接的查询创建它,
您可以将光标用作下面的
DECLARE
-- here you declare a cursor named c_cursor_name
CURSOR c_cursor_name IS SELECT a.emp_name
, b.dept_name
FROM xx_emp a
, xx_Dept b
WHERE a.dept_id = b.dept_id;
-- here you can declare your record based on your cursor
r_recors_type c_cursor_name%ROWTYPE;
BEGIN
-- now you can fill your cursor as you want
r_recors_type.emp_name := 'JOE';
r_recors_type.dept_name := 'Marketing';
END;