2012-03-04 65 views
-4

我在sql中有这样的代码,它在sql server 2005上运行完美。但是,当我在isql plus中运行此代码时,它会给出错误,我应该如何更改才能运行它。如何在oracle中运行这段sql代码?

代码---

DECLARE @stu_Name VARCHAR(50), @stu_Address VARCHAR(50) 
SELECT @stu_Name = g.stu_Name,@stu_Address= g.stu_address 
FROM student as g 
WHERE unique_no = 's121' 
INSERT INTO 
    dbo.student(stu_no, stu_name, dateofbirth,stu_unique_no, stu_name,stu_address) 
VALUES 
    (13, 'John', '1990-12-12','s121', @stu_Name, @stu_Address); 
+5

请阅读关于PL/SQL(阅读一本书,阅读Oracle文档)。该语法与MS SQL语法有很大不同。 – Mat 2012-03-04 18:18:11

+1

你得到了什么错误? – emaillenin 2012-03-04 18:18:14

+0

PLS-00103:遇到下列其中一项时遇到符号“@”: begin函数pragma过程子类型<标识符> – user760946 2012-03-04 18:21:44

回答

2

@ A.B.Cade给the efficient way of doing things。当然,他的语法也可以在SQL Server中工作。因此,练习的目的就是将T-SQL完全转换为PL/SQL。

DECLARE 
    l_stu_Name. student.stu_Name%type; 
    l_stu_Address student student.stu_address%type; 
BEGIN 
    SELECT stu_Name, stu_Address 
    into l_stu_Name, l_stu_address 
    FROM student as g 
    WHERE unique_no = 's121' ; 
    INSERT INTO 
     dbo.student(stu_no, stu_name, dateofbirth,stu_unique_no, stu_name,stu_address) 
    VALUES 
     (13, 'John', '1990-12-12','s121', l_stu_Name, l_stu_Address); 
END; 
/

您应该知道Oracle文档是全面的,在线的和免费的。你应该学会导航它。 find it here。的问题。

0
INSERT INTO 
    dbo.student(stu_no, stu_name, dateofbirth,stu_unique_no, stu_name,stu_address) 
SELECT 13, 'John', to_date('1990-12-12','yyyy-mm-dd'),g.unique_no, g.stu_Name, g.stu_address 
FROM student as g 
WHERE unique_no = 's121'; 

没有检查它,但是这是一个开始......