2011-08-08 13 views
15

Migrowanie kodu asp.net (VB.net) w celu użycia funkcji i podprogramów jako parametrów. Używanie programu MS Server Management Studio do tworzenia wymienionych funkcji i podsystemów. Chcesz przetestować funkcje z poziomu MS SMS, zanim przetestujesz je na stronie internetowej. Oto przykład. Że mam funkcję o nazwie „dbo.getNumber”Przypisanie wyniku funkcji do zmiennej SQL i wyświetlenie

Próbuję przetestować go przy użyciu następujących:

USE [someDB] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
declare @value int; 

select @value = dbo.getNumber; 

print @value; 
go 

Po wpisaniu F5 (aby uruchomić „zapytanie”) daje następujące wiad :

"Nazwa" dbo.getNumber "jest niedozwolona w tym kontekście Poprawne wyrażenia to stałe, wyrażenia stałe i zmienne (w niektórych kontekstach) Nazwy kolumn są niedozwolone."

Funkcja dbo.getNumber została zaakceptowana po prostu dobrze, btw. (Zlicza rekordy bazy danych, które spełniają określone kryteria.)

Mam nadzieję, że możesz wywnioskować z niedziałającego kodu, co próbuję zrobić.

Jak mogę wydrukować wartość funkcji (do celów testowych) z poziomu wiadomości SMS?

Prawidłowe rozwiązanie według James Johnson, poniżej:

USE [someDB] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
declare @value int; 

select @value = dbo.getNumber(); 

print @value; 
go 

Uwaga parens dla wywołania funkcji. Uwaga: intellisense w SMS podkreśla dbo.getNumber() tak, jakby był błędem, ale uruchomienie zapytania z F5 działa i daje właściwy wynik.

Odpowiedz

35

Trzeba nazwać tak:

select @value = dbo.getNumber() 
+0

to wszystko. Cholera. (Nie mogę zaakceptować tego przez kolejne 7 minut, ale zrobię to). Byłem trochę zdezorientowany faktem, że było to podkreślone tak, jakby było źle, bez względu na to, co zrobiłem. Dzięki! – elbillaf

+0

Cieszę się, że zadziałało. Doceniam to, wybierając ją jako odpowiedź :) –

+0

+1 mam nadzieję, że zrobiłem twój dzień !! – Mukus

Powiązane problemy