Avatar billede oliverdb Nybegynder
02. juli 2001 - 14:16 Der er 4 kommentarer

SP of masse INSERT

Jeg har følgende SP.

CREATE PROCEDURE SP_INSERT_ELEV_VEJL_Afheangighed


AS

INSERT INTO OU12100T(personnummer,aendringsdato,bruger_id)

SELECT OU10000T.PERSONNUMMER,
convert(datetime,{ fn NOW() },5),
OU14100T.ID
FROM OU10000T INNER JOIN
  ou11900t ON
    OU10000T.KLASSE_ID = ou11900t.ID INNER JOIN
    ou11700t ON
    ou11900t.skolekode = ou11700t.KODE INNER JOIN
    OU14100T ON
    ou11900t.skolekode = OU14100T.skole_kode
WHERE ou10000T.EKSTERN_Vejledning IS NULL


Når jeg kører den får jeg følgende fejl.

Server: Msg 512, Level 16, State 1, Procedure ou12100t_INS, Line 20
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.


Hvad gør jeg galt
Avatar billede torbenkoch Nybegynder
02. juli 2001 - 17:35 #1
Det betyder, at din sub-query (OU14100T.ID FROM OU10000T ... IS NULL) returnerer mere end en post, hvilket den så ikke må i ovenstående query.

Hvorfor den så ikke lige må det er et afsindigt godt spørgsmål, som jeg ikke lige umiddelbart kan svare på...
Avatar billede sunedh Nybegynder
03. juli 2001 - 20:15 #2
Det eneste jeg synes ser lidt sjovt ud er
convert(datetime,{ fn NOW() },5)

Jeg må tilstå at jeg ikke har hørt man kan anvende NOW() på SQL Server og ikke ved hvad fn skal gøre. Hvis Now() findes (jeg har ikke kunnet finde den i BOL) må man vel gå ud fra den returnere en datetime værdi og så er der jo ingen grund til en CONVERT.

Jeg ville kort og godt skrive GETDATE() i denne kolonne, men må¨tilstå at det er en mærkelig fejlmeddelse hvis dette løser det. GETDATE() anvendes i stedet for VB-script\'s (og dermed Access\') Now() i SQL Server.

-Sunedh
Avatar billede torbenkoch Nybegynder
04. juli 2001 - 11:05 #3
Jeg vil næsten tro at det er en SQL Server 2000 og at det er en eller anden user function. Kender ikke syntaksen for kaldet af en sådan. Men det kan spørgeren vel fortælle os??
Avatar billede oliverdb Nybegynder
05. juli 2001 - 16:20 #4
Yep og den funker fint I alle mine andrer SP\'s

Men al min dokumentation siger at den der skulle virke, og den klarer da oxo syntax checket.

Men saasnart jeg faar mere en 1 row ud af SELECT statementen saa virker den ikke. Fejlmeddelsen kommer normalt ved subqueries f.eks

Select *
from table
where table.id AS(
Select *
from table2
)

Her maa der naturligvis ikke vaere mere en 1 row i subqueryen.

Hvordan i hulen masse INSERT\'er jeg ?
 
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester